2 votes

Sélectionnez Date distincte et Compte

Mon exemple de structure de table est le suivant :

TestDate
----------------------
2013-03-25 14:26:40.830
2013-03-20 13:37:39.763
2012-09-10 14:55:55.667
2013-03-20 13:33:20.480

Et ma question est la suivante :

SELECT DISTINCT 
    REPLACE(RIGHT(CONVERT(VARCHAR(20), TestDate, 106), 8), ' ', '-') AS  TT
    ,(SELECT COUNT(*) 
      FROM Test bp 
      WHERE 
        CONVERT(VARCHAR(20), p.TestDate, 6) = CONVERT(VARCHAR(20), bp.TestDate, 6)) AS Posts 
 FROM Test p

J'ai obtenu un résultat :

TT         Posts
Mar-2013    1
Mar-2013    2
Sep-2012    1

Mais je veux un résultat :

TT         Posts
Mar-2013    3
Sep-2012    1

Mais je ne parviens pas à trouver mon erreur dans ma requête. Merci.

3voto

marc_s Points 321990

Essayez-vous de sélectionner les lignes et de compter pour chaque mois ?

Si oui, essayez quelque chose comme ceci :

SELECT  
   YEAR(Testdate), MONTH(Testdate),
   COUNT(*) totalPost
FROM    
   tableName
GROUP BY
   YEAR(Testdate), MONTH(Testdate)

Mise à jour : si vous insister sur le formatage à l'intérieur de SQL Server (qui, à mon avis, n'est pas le bon endroit pour faire cela...) - alors utilisez quelque chose comme ceci :

SELECT DISTINCT
   SUBSTRING(DATENAME(MONTH, TestDate), 1, 3) + '-' + CAST(YEAR(TestDate) AS VARCHAR(4)),
   YEAR(Testdate), MONTH(Testdate),
   TotalPosts = COUNT(*) 
FROM    
   tableName
GROUP BY
   SUBSTRING(DATENAME(MONTH, TestDate), 1, 3) + '-' + CAST(YEAR(TestDate) AS VARCHAR(4)),
   YEAR(Testdate), MONTH(Testdate)
ORDER BY
   YEAR(Testdate), MONTH(Testdate)

2voto

John Woo Points 132738

Vous devez lancer DATETIME en DATE d'abord.

SELECT  CAST(TestDate AS DATE) DATE_ONLY,
        COUNT(*) totalPost
FROM    tableName
GROUP   BY  CAST(TestDate AS DATE)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X