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.
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;
267 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849