Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 General SQL Server Forums
 New to SQL Server Programming
 Group by week?

Author  Topic 

MikeB
Constraint Violating Yak Guru

387 Posts

Posted - 2006-03-30 : 08:38:56
I want to group my data by "week of". That is for each date, I want to group the data by the Monday of the week that the date falls on.

I have tried using:

SET DATEFIRST 1
SELECT WEEK = DATEADD(day, -1 * DATEPART (dw, ProductionDate), ProductionDate), ProductionDate
FROM tbHollowcoreBedSchedule


which I apparently don't understand. Any help on this? I need to group by the Monday, the above does what I want but groups by the Sunday.

I tried seting DATEFIRST = 2 but this seems to set WEEK to the previous monday.

Any suggestions?

Mike B

Srinika
Master Smack Fu Yak Hacker

1378 Posts

Posted - 2006-03-30 : 08:42:30
Can u post some sample data and the expected output

Srinika
Go to Top of Page

MikeB
Constraint Violating Yak Guru

387 Posts

Posted - 2006-03-30 : 08:49:03
quote:
Originally posted by Srinika

Can u post some sample data and the expected output

Srinika



Acually I believe I found the answer in the following thread:
http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=47307

If this does not work I will post as you suggest. Thanks for peeking in!


SELECT WEEK = DateAdd(d, -((@@DATEFIRST + DatePart(dw, ProductionDate) -2) % 7), ProductionDate
FROM tbHollowcoreBedSchedule


Thanks again!

Mike B

Go to Top of Page

jhermiz

3564 Posts

Posted - 2006-03-30 : 10:40:52
Here is an example of a group by week procedure I use for a report:


CREATE PROCEDURE rsp_release_tasks_by_week_number_static
@SUBJECT varchar(255)=NULL,
@AUTHOR varchar(255)=NULL,
@PROJECTNAME varchar(255)=NULL,
@CATEGORY varchar(255)=NULL,
@StartDate datetime=NULL,
@EndDate datetime = NULL
AS

SELECT DatePart(ww, pt.EXPECTED_START_DATE) As WeekNumb,
SUM (CASE WHEN pt.TEXT_29='BOM-E' THEN 1 ELSE 0 END) AS [BOM-E],
SUM (CASE WHEN pt.TEXT_29='BOM-M' THEN 1 ELSE 0 END) AS [BOM-M],
SUM (CASE WHEN pt.TEXT_29='BOM-F' THEN 1 ELSE 0 END) AS [BOM-F],
SUM (CASE WHEN pt.TEXT_29='R-GM' THEN 1 ELSE 0 END) AS [R-GM],
SUM (CASE WHEN pt.TEXT_29='RLL-E' THEN 1 ELSE 0 END) AS [RLL-E],
SUM (CASE WHEN pt.TEXT_29='RLL-F' THEN 1 ELSE 0 END) AS [RLL-F],
SUM (CASE WHEN pt.TEXT_29='RLL-M' THEN 1 ELSE 0 END) AS [RLL-M],
SUM (CASE WHEN pt.TEXT_29='RXLL' THEN 1 ELSE 0 END) AS [RXLL],
SUM (CASE WHEN pt.TEXT_29='REC' THEN 1 ELSE 0 END) AS [REC],
SUM (CASE WHEN pt.TEXT_29='S-BOM-M' THEN 1 ELSE 0 END) AS [S-BOM-M],
SUM (CASE WHEN pt.TEXT_29='S-BOM-E' THEN 1 ELSE 0 END) AS [S-BOM-E],
SUM (CASE WHEN pt.TEXT_29='S-REC' THEN 1 ELSE 0 END) AS [S-REC]
FROM PROJ_TASK pt INNER JOIN PROJECT p ON
p.PROJECTID=pt.PROJECTID
WHERE
(pt.EXPECTED_START_DATE BETWEEN isnull(DATEADD(d, DATEDIFF(d, 0, @StartDate), 0), '19000101') AND isnull(DATEADD(d, DATEDIFF(d, 0, @EndDate), 0), '99990101'))
AND (@SUBJECT IS NULL OR p.SUBJECT = @SUBJECT)
AND (@AUTHOR IS NULL OR p.AUTHOR = @AUTHOR)
AND (@CATEGORY IS NULL OR p.CATEGORY = @CATEGORY)
AND (@PROJECTNAME IS NULL OR pt.PROJECTNAME=@PROJECTNAME)
AND pt.TASK_TYPE = 0
AND pt.TASK_STATUS <> 2
AND p.PROJECT_TYPE = 2
GROUP BY DatePart(ww, pt.EXPECTED_START_DATE)
ORDER BY WeekNumb
Set NOCOUNT OFF
GO





Keeping the web experience alive -- [url]http://www.web-impulse.com[/url]

RS Blog -- [url]http://weblogs.sqlteam.com/jhermiz[/url]
Go to Top of Page
   

- Advertisement -