webForumDet fria alternativet

Sorteringsfråga

7 svar · 274 visningar · startad av Annakay

AnnakayMedlem sedan sep. 2003143 inlägg
#1

Hej!

Jag har en SQL-fråga som väljer ut antal logins per dag

select convert(varchar(10),login_date,103) as login_date,
          count(*)as antal 
from tblLogins 
group by convert(varchar(10),login_date,103)
order by antal

Datumformatet i databasen är både datum och tid, vilket resulterar i den lite krångliga SQL-frågan.

Om jag sätter

order by login_date

så blir det inte som jag vill dock... Då sorterar den på dagen i datumet, snarare än år och månad:

08/12/2004 : 1
09/11/2004 : 1
10/01/2005 : 3
10/11/2004 : 2
11/01/2005 : 4
11/11/2004 : 3
12/01/2005 : 1

Kan jag få ut rätt resultat direkt i SQL-frågan eller måste jag försöka få ut rätt ordning manuellt i koden där jag matar ut allt resultat? Jag vill ju få ut:

09/11/2004 : 1
10/11/2004 : 2
11/11/2004 : 3
08/12/2004 : 1
10/01/2005 : 3
11/01/2005 : 4
12/01/2005 : 1

DBMS = SQL Server

Många tack på förhand till er som hajar bättre än mig... :p

LarsGMedlem sedan dec. 200012 464 inlägg
#2
select login_date,antal from (
select convert(varchar(10),login_date,103) as login_date,
          count(*)as antal 
from tblLogins 
group by convert(varchar(10),login_date,103)) dt
order by convert(varchar(10),login_date,112)
AnnakayMedlem sedan sep. 2003143 inlägg
#3

Hmm... Det funkar inte.. Samma resultat som innan...

LarsGMedlem sedan dec. 200012 464 inlägg
#4
select convert(varchar(10),login_date,103),antal from (
select cast(convert(varchar(10),login_date,112) as datetime)
as login_date,
          count(*)as antal
from tblLogins
group by cast(convert(varchar(10),login_date,112) as datetime)) dt
order by login_date
AnnakayMedlem sedan sep. 2003143 inlägg
#5

När jag skulle skriva ut resultatet så hittade den inte "login_date" eftersom den inte hade något namn i urvalet...

Jag skrev:

select convert(varchar(10),login_date,103) as logindate,antal from (
select cast(convert(varchar(10),login_date,112) as datetime)
as login_date,
          count(*)as antal
from tblLogins
group by cast(convert(varchar(10),login_date,112) as datetime)) dt
order by login_date

då funkade det!

Tusen tack! Det här hade jag aldrig klarat själv.. :r

AnnakayMedlem sedan sep. 2003143 inlägg
#6

En fråga till!

Om jag vill välja ut alla poster som inte har userID 1 eller 2 då? Var stoppar jag in "WHERE userID > 2"?

LarsGMedlem sedan dec. 200012 464 inlägg
#7
from tblLogins
where userID not in (1,2)
group by
AnnakayMedlem sedan sep. 2003143 inlägg
#8

Tuuuusen tack! Funkar fin-fint!

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)