J'utilise sql server 2008 r2. voici ma requête.besoin d'aide pour grouper mon résultat
SELECT TOP 25 A.*, U.Displayname AS UserName,
SU.Displayname AS SmoothieAuthorName,
S.Name AS SmoothieName, S.Id AS SmoothieId
FROM dbo.Activity AS A
LEFT JOIN dbo.[User] AS U ON A.UserId = U.Id
LEFT JOIN dbo.[User] AS SU ON A.SmoothieAuthorId = SU.Id
LEFT JOIN dbo.Smoothie AS S ON A.SmoothieId = S.Id
WHERE A.UserId = 2 [email protected]
AND A.UserId <> A.SmoothieAuthorId
ORDER BY CreatedDate DESC
suivant est mon résultat. maintenant, j'ai besoin de les grouper par SmoothieId et CreatedDate (seulement la partie date du groupe, ignore le temps). Les deux premiers ne devraient en renvoyer qu'un, 3 à 5 ne devraient en retourner qu'un. Je ne sais pas comment le faire, s'il vous plaît aider.
Id ActionType UserId SmoothieId SmoothieAuthorId CreatedDate UserName SmoothieAuthorName SmoothieName SmoothieId
1 view 2 128 1 2013-01-15 20:05:03.403 mike test1234 new testing 2d 128
2 view 2 128 1 2013-01-15 20:16:24.733 mike test1234 new testing 2d 128
12 view 2 128 1 2013-01-16 21:45:56.167 mike test1234 new testing 2d 128
13 view 2 128 1 2013-01-16 22:12:51.217 mike test1234 new testing 2d 128
14 view 2 128 1 2013-01-16 22:12:54.407 mike test1234 new testing 2d 128
15 view 2 69 1 2013-01-16 22:19:54.783 mike test1234 sdfsdfwww 69
Au lieu de A *, spécifiez uniquement les colonnes requises et assurez-vous qu'elles sont identiques, sauf pour les colonnes que vous vouliez 'GROUP BY', par exemple, Smoothield et CreatedDate. Et mentionnez-les tous dans la clause GROUP BY et pour la date, essayez GROUP BY CONVERT (DATE, CreatedDate) – Sunny
J'ai besoin de tous les champs dans A – qinking126
Voici ce que je voulais dire, considérons les deux premiers enregistrements, vous avez dit qu'un seul enregistrement doit être rempli. Mais id est 1 et 2, donc GROUP BY les traite comme deux enregistrements différents. Pensez à GROUP BY comme un seau où nous mettons des éléments qui ont les mêmes attributs. – Sunny