webForumDet fria alternativet

MS SQL 2000: Group by quarter

Databaser & SQLur Databashanterare & SQL

11 svar · 447 visningar · startad av Mattias Nordin

Medlem sedan dec. 20051 056 inlägg
Frågan#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

Medlem 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)
Medlem 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 ?

Medlem sedan juli 200012 978 inlägg
#4

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

Medlem sedan juni 200032 967 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.

Medlem sedan dec. 20051 056 inlägg
#6

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

Medlem sedan dec. 20003 887 inlägg
#7

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

Medlem sedan dec. 200012 464 inlägg
#8

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

Argumentet till datepart anges med apostrofer 'q'

Medlem 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.

Medlem sedan dec. 200012 464 inlägg
#10
select cstr( ... )
Medlem 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

Medlem sedan dec. 200012 464 inlägg
#12

Ja, ta bort det.

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