Avatar billede baitianlong Nybegynder
26. april 2010 - 11:19 Der er 4 kommentarer og
1 løsning

Problemer med AS i SQL

Jeg har en tabel pageload(url varchar(200), entrytime  smalldatetime)

Jeg vil have en liste over hvor mange page loads, der har vaeret de sidste 24 timer fordelt paa timer.

DERFOR:

SELECT COUNT(*) AS n, DATEPART(hour, entrytime) AS h FROM pageload WHERE DATEDIFF(hour, entrytime, GETDATE()) < 24 GROUP BY h ORDER BY n DESC;

Men det giver en fejl:

Invalid column name 'h'

Den snakker om h i GROUP BY aabenbart for dette "virker"

SELECT COUNT(*) AS n, DATEPART(hour, entrytime) FROM pageload WHERE DATEDIFF(hour, entrytime, GETDATE()) < 24 GROUP BY DATEPART(hour, entrytime) ORDER BY n DESC;

Hvad er der galt med AS h og GROUP BY h ?? (Det er ligemeget om den hedder h eller alt muligt andet!)
Avatar billede janus_007 Nybegynder
26. april 2010 - 11:40 #1
Du kan ikke referere til en aggregate function igennem et alias, dvs. du skal bruge gentage koden i din select da group by bliver evalueret først :)

Det sidste som du skrev fungerer og har den korrekte syntax!

PS: Alias virker dog i din order by :) fordi order by blive evalueret senere!
Avatar billede baitianlong Nybegynder
26. april 2010 - 12:02 #2
Saa det vil sige at den skal se saadan her ud:

SELECT COUNT(*) AS n, DATEPART(hour, entrytime) AS h FROM pageload WHERE DATEDIFF(hour, entrytime, GETDATE()) < 24 GROUP BY DATEPART(hour, entrytime) ORDER BY n DESC;

?

I mit 2. eksempel er der ikke noget alias paa DATEPART i select, saa derfor er det svaert at faa fat i den programmatisk...
Avatar billede janus_007 Nybegynder
26. april 2010 - 12:31 #3
Ja sådan vil den så se ud :)
Avatar billede baitianlong Nybegynder
26. april 2010 - 12:45 #4
ok, du kan bare smide et svar...
Avatar billede janus_007 Nybegynder
26. april 2010 - 13:35 #5
Okay :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester