---
title: "MS SQL - Gruppera datum per vecka"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/184950-ms-sql-gruppera-datum-per-vecka"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Sjodahl"
published: "2010-10-17T11:07:16.000Z"
updated: "2010-10-17T13:31:11.000Z"
replies: 2
views: 1010
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/184950-ms-sql-gruppera-datum-per-vecka"
---

# MS SQL - Gruppera datum per vecka

## #1 — Sjodahl, 2010-10-17T11:07Z

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

Permalänk: https://www.webforum.nu/p/184950

## #2 — nitro2k01, 2010-10-17T11:41Z

```
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](http://stackoverflow.com/questions/348880/getting-week-number-off-a-date-in-ms-sql-server-2005) eller [detta](http://www.windowsitpro.com/article/john-savills-windows-faqs/why-is-the-week-number-returned-by-sql-server-wrong-14340.aspx) för att komma runt det problemet.

Permalänk: https://www.webforum.nu/p/2257147

## #3 — Sjodahl, 2010-10-17T13:31Z

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;
```

Permalänk: https://www.webforum.nu/p/2257157

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/184950-ms-sql-gruppera-datum-per-vecka
