SjodahlMedlem sedan maj 20033 137 inlägg
Hej,
Finns det något smidigt sätt om man har en tabell som bland annat innehåller ett fält för datum att gruppera efter dessa och antalet?
2010-01-01
2010-01-01
2010-01-01
2010-01-03
2010-01-08
2010-01-08
2010-01-08
Gruppering
Vecka1: 4st
Vecka2: 3st
nitro2k01Medlem sedan aug. 20037 630 inlägg
SELECT count(*), DATEPART(wk, datum)
FROM tabell
GROUP BY DATEPART(wk, datum);
Detta bör dock räkna söndag som veckans första dag, samt inte numrera veckorna som vi gör.
Prova t ex detta eller detta för att komma runt det problemet.
SjodahlMedlem sedan maj 20033 137 inlägg
Tackar!
SET DATEFIRST 1 -- for monday
SELECT count(ProjectDataId) AS Number, dbo.isoweek(PreliminaryVerificationPlanned) AS WeekNr
FROM dbo.tblProjectData
WHERE PreliminaryVerificationPlanned IS NOT NULL
GROUP BY PreliminaryVerificationPlanned
CREATE FUNCTION [dbo].[isoweek] (@DATE datetime)
RETURNS INT
WITH EXECUTE AS caller
AS
BEGIN
DECLARE @ISOweek INT
SET @ISOweek= datepart(wk,@DATE)+1
-datepart(wk,CAST(datepart(yy,@DATE) AS CHAR(4))+'0104')
--Special cases: Jan 1-3 may belong to the previous year
IF (@ISOweek=0)
SET @ISOweek=dbo.isoweek(CAST(datepart(yy,@DATE)-1
AS CHAR(4))+'12'+ CAST(24+datepart(DAY,@DATE) AS CHAR(2)))+1
--Special case: Dec 29-31 may belong to the next year
IF ((datepart(mm,@DATE)=12) AND
((datepart(dd,@DATE)-datepart(dw,@DATE))>= 28))
SET @ISOweek=1
RETURN(@ISOweek)
END;