Plusieurs relevés mensuels dans le cycle de facturation mensuelle

voix
-2

Chaque ministère est censé avoir qu'une seule instruction par cycle de facturation mensuelle.


Mon objectif est de savoir combien de ministères ont été touchés avec plus d'un relevé de facturation dans le même cycle de facturation.

  LE CONTEXTE: 

Ma requête en cours est configuré pour vérifier les départements seulement qui sont censés être facturés chaque mois.

Table Département a un à plusieurs avec table de déclaration (un ministère devrait avoir une déclaration à la fin de chaque cycle de facturation)

Chaque relevé de facturation a son propre closed_date

a.payment_period = 1 représente les services qui sont facturés mensuellement

J'ai aussi essayé de chercher entre les dates spécifiques viennent à échéance sur une base par compte.


 Le problème avec ma requête est qu'il affiche le nombre total de closed_dates de facturation, au lieu de vérifier que pour de multiples occurrences dans un cycle de facturation.  


Comment cette requête être modifiée pour que les départements de sortie avec plus d'une instance d'une facture mensuelle survenant dans le cycle de facturation de chaque ministère?  

QUESTION:

    SELECT s.department, s.statement, COUNT(s.closed_date) AS sd, from_unixtime(s.closed_date)
    FROM statement s
    INNER JOIN department d
    ON s.department=d.department
    WHERE from_unixtime(s.closed_date) BETWEEN 
    DATE_SUB(from_unixtime(d.exp_date), INTERVAL 1 MONTH) AND 
    from_unixtime(d.exp_date)  
    AND d.period=1
    GROUP BY s.statement DESC
    HAVING sd>1

SORTIE EXEMPLE:

department  statement        sd     closed_date
1719712        9351464        3     2018-09-24 
1719709        9351463        2     2018-09-24 
1719708        9351462        2     2018-09-24 
1719665        9351457        3     2018-09-24 
Créé 07/11/2018 à 20:06
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Il semble que vous essayez de groupe par mois.

Dans MySQL , il est un travail pour la LAST_DAY()fonction. Le modèle dont vous avez besoin pour cela est la suivante :

 SELECT a, b, LAST_DAY(datestamp) month_ending, SUM(c) c, MAX(d) maxd
   FROM table
  GROUP BY a, b, LAST_DAY(datestamp)

Donc, pour votre situation, vous voulez d'abord trouver les situations avec plus d'une facture dans un mois donné.

Je dois deviner parce que je ne comprends pas le sens de exp_date. Cela devrait faire ce que vous voulez.

      SELECT s.department, LAST_DAY(FROM_UNIXTIME(s.closed_date)) month_ending,
             COUNT (*) statement_count
        FROM statement s
        JOIN department d ON s.department = d.department
       WHERE d.period = 1
         AND s.closed_date >=  (FROM_UNIXTIME(d.exp)) - INTERVAL 1 MONTH
         AND s.closed_date <   (FROM_UNIXTIME(d.exp)) 
       GROUP BY s.department, LAST_DAY(FROM_UNIXTIME(s.closed_date))
       HAVING COUNT(*) > 1

Cela donne un jeu de résultats avec une ligne par département par mois, filtré il montre que les services avec plusieurs factures.

Créé 07/11/2018 à 22:04
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more