2009-06-22 11 views
1

J'ai la requête ci-dessous qui me cause des problèmes. C'est totalisant bien cependant comme j'ai différentes dates de service son regroupement par distinct puis servicedate, mais je veux juste des secteurs distincts avec les totaux suivants. Comment puis-je contourner ce que je suis confus maintenant !!!question de sous-requête

SELECT DISTINCT(DISTRICT), 
     Sum(completed) as TotalCompleted, 
     MONTHNAME, 
     MONTH 

FROM(SELECT TBL_PROPERTY.DISTRICT, 
     TBL_SERVICE.SERVICEDATE, 
     DATENAME(MONTH, SERVICEDATE) AS MONTHNAME, 
     CONVERT(INT,CONVERT(VARCHAR,DATEPART(YEAR, SERVICEDATE) + '00')) + DATEPART(MONTH, SERVICEDATE) AS MONTH, 
     COUNT(tbl_property.Propref) AS Completed 

FROM TBL_SERVICE INNER JOIN TBL_PROPERTY ON TBL_SERVICE.PROPREF = TBL_PROPERTY.PROPREF 

WHERE (TBL_PROPERTY.CONTRACT ='ma2') AND 
     (LASTSERVICEDATE BETWEEN '01/jun/2009' AND DATEADD(hh,23,'15/jun/2009')) AND 
     (NOT (TBL_SERVICE.BILLCODE1 = 'NA')) AND 
     (TBL_SERVICE.STATUS = 'Serviced') AND 
     (PROPERTYCLASS = 'cont') 

GROUP BY DISTRICT, servicedate 
) As sub1 

GROUP BY DISTRICT, monthname, month, Completed 

Exemple de données

Ainsi, par exemple, je vois actuellement

District1 - 2 - Juin District1 - 5 - Juin

Et je veux voir

District1 - 7 - Juin

+0

Pourriez-vous s'il vous plaît fournir quelques exemples de données et un jeu de résultats que vous voulez obtenir? – Quassnoi

+0

exemple ci-dessus tel que demandé –

Répondre

0

Je n'ai pas vérifié je t à travers complètement, mais il semble que votre problème est que vous avez "terminé" qui est votre agrégat dans votre groupe à la fin.

Modifiez la dernière ligne comme ci-dessous et voyez si cela fonctionne.

GROUP BY DISTRICT, monthname, month 
+0

J'ai pris le résultat et j'ai obtenu moins de résultats mais j'obtiens toujours pour un district 2 séries de résultats pour le même mois et je veux juste un district, 1 mois? donc par exemple que je vois actuellement District1 - 2 - Juin District1 - 5 - Juin Et je veux voir District1 - 7 - Juin –

2

Si je vous lis correctement, vous ne voulez voir que DISTRTICT, SUM (COMPLETED). si tel est le cas, vous devriez juste

SELECT DISTRTICT, SUM(COMPLETED) FROM... 

et à la fin

GROUP BY DISTRICT 

modifier:

votre demande mise à jour, je vous suggère de faire ce qui suit:

SELECT DISTRTICT, SUM(COMPLETED), MONTHNAME FROM... 

et à la fin

GROUP BY DISTRICT, MONTHNAME