webForumDet fria alternativet

MS SQL 2000: Group by quarter

11 svar · 447 visningar · startad av Mattias Nordin

Mattias NordinMedlem sedan dec. 20051 056 inlägg
#1

Hej, nu har jag kört fast igen.

Jag försöker få till en fråga som räknar ihop alla rader som finns och så vill jag gruppera dessa i kvartalsform.

Tabellen ser ut så här:

ID | ReminderDate
--------------------------
1 | 2006-08-01 12:12:12
2 | 2006-08-02 12:13:22

Jag har provat olika varianter med GROUP BY men det vill sig inte.

Hänvisning i rätt riktning behövs. :stud

Resultatet vill jag ska se ut så här:

KVARTAL | ANTAL
------------------------
2006 Q1 | 12
2006 Q2 | 4

LarsGMedlem sedan dec. 200012 464 inlägg
#2
select cast(year(reminderDate) as char(4)) +  
         ' Q' + cast(datepart(q,reminderDate) as char(1)) as KVARTAL,
         count(*) as ANTAL
 from t
group by year(reminderDate), datepart(q,reminderDate)
Mattias NordinMedlem sedan dec. 20051 056 inlägg
#3

Hej LarsG, fint väder idag !

My bad... Det visade sig att applikationen arbetar mot en Access 2003 databas.

En del tabeller forwarderar vidare frågorna till den större MS Sql servern på något sätt men inte denna tabellen.

Antar att detta ställer till problem med frågan ovan? Jag får syntax error när jag försöker testköra frågan i Access 2003.

select cast(year(Reminder.AddDate) as char(4)) +  
         ' Q' + cast(datepart(q,Reminder.AddDate) as char(1)) as KVARTAL,
         count(*) as ANTAL
 from Reminder
group by year(Reminder.AddDate), datepart(q,Reminder.AddDate)

Hur fungerar CAST ?

LaspMedlem sedan juli 200012 980 inlägg
#4

CAST plockar väl en del av en kolumn! Finns defaultvärden och framförallt datumbitar.

@ndersMedlem sedan juni 200032 969 inlägg
#5

CAST plockar väl en del av en kolumn! Finns defaultvärden och framförallt datumbitar.

Nej, CAST konverterar ett värde till en bestämd datatyp, i LarsGs exempel char.

Mattias NordinMedlem sedan dec. 20051 056 inlägg
#6

Har ni någon ide om vad som genererar syntax error felmeddelandet? :)

Engine^Medlem sedan dec. 20003 887 inlägg
#7

Det borde väl fungera om du helt enkelt skippar CAST()

LarsGMedlem sedan dec. 200012 464 inlägg
#8

Access använder Cstr för att konvertera till char.

Argumentet till datepart anges med apostrofer 'q'

Mattias NordinMedlem sedan dec. 20051 056 inlägg
#9
select cast(year(Reminder.AddDate) AS cstr(4)) from Reminder

Ger syntax error (missing operator)... :(

SELECT Year(Reminder.AddDate) AS Expr1
FROM Reminder;

Fungerar.

LarsGMedlem sedan dec. 200012 464 inlägg
#10
select cstr( ... )
Mattias NordinMedlem sedan dec. 20051 056 inlägg
#11

Jag är verkligen ute och cycklar...

select cstr(year(Reminder.AddDate) as char(4))
from SUAReminder

Ger syntax error (missing operator). :(

Jag har känslan av att det är "char(4))" som den inte tycker om. :q

LarsGMedlem sedan dec. 200012 464 inlägg
#12

Ja, ta bort det.

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