COUNT() sammen med ikke aggregate'ede felter i ét udtræk
Hej :)Det er muligvis et lidt dumt spørgsmål men ... here goes:
Jeg har en tabel med følgende felter:
UID1(int), UID2(int), dato(datetime)
Det er en tabel der bruges til at føre statestik med antal besøgende på et par hjemmesider. UID1 er hvilken hjemmeside og UID2 er hvilken side (en hjemmeside kan bestå af flere enkelte sider) samt en datetime for besøget.
Indhold kunne således se sådan ud:
UID1, UID2, dato
1, 1, 07-11-2007 12:52:21
1, 9, 07-11-2007 12:49:36
1, 1, 07-11-2007 13:52:21
2, 19, 07-11-2007 10:52:21
*bemærk at der er 2 besøg på siden med UID2 = 1
Det jeg gerne vil have trukket ud er en COUNT på UID2 (UID2 er unikt for alle sider) med dato uden tid samt UID1. For at følge eksemplet, ville output se sådan ud:
UID1, UID2, ANTALBESØG, DATO
1, 1, 2, 07-11-2007
1, 9, 1, 07-11-2007
2, 19, 1, 07-11-2007
Hvordan kan jeg klare det?
Det tætteste jeg er kommet på er noget i stil med (virker naturligvis ikke!):
SELECT UID1, UID2, COUNT(UID2) AS ANTALBESØG, DATEADD(day, DATEDIFF(day, '20000101', DATO), '20000101') as DATO
FROM CGADS_Statistics_Articles
WHERE StartDateTime > convert(datetime, '11/07/2007') AND StartDateTime < convert(datetime, '11/07/2007 23:59:59')
GROUP BY UID2, UID1, DATO
ORDER BY UID2
Problemet med det jeg har lavet er at den ikke gruppere efter UID2. Der kommer således bare til at stå 1 udfor alle ANTALBESØG. Men den kræver at jeg laver GROUPE BY UID1 og DATO for at ville validere queryen.
Jeg må havde overset et eller andet basalt her :-)