开发者

Calculate data based on days and weeks in SQL

开发者 https://www.devze.com 2023-03-03 10:32 出处:网络
I have clients they stores data in days or weeks bases. But client has only option to store data either in days or week. see below example

I have clients they stores data in days or weeks bases. But client has only option to store data either in days or week. see below example

ClientID  StoreID    period      hours
1       10      2010-04-19  8.04
1       10      2010-04-20  6.24
1       10      2010-04-21  8.26
1       20      2010-04-22  7.94
1       20      2010-04-23  22.43
1       20      2010-04-24  22.99
2       5       2010-12-19  130.67
2       5       2010-12-26  159.26
2       5       2011-01-02  113.59
2       5       2011-01-09  12.66
2       8       2011-01-16  22.34
2       8       2011-01-23  11.35

Now I have to sum hours based client id period for last 52 weeks to 27 weeks and 27 weeks to present.

Example: ClientId =1 from last 52 weeks to 27 weeks total hours = 150 ClientId =1 from last 27 weeks to today total hours = 200

ClientId =2 from last 52 weeks to 27 weeks total hours = 350 ClientId =2 from last 27 weeks to today total hours = 250.

I ne开发者_开发知识库ed this in T-SQL. It is confusing me. Please some one write me a query.

There is another table for Clients time level like this.

Client   time_level
1       Day
2       Week

Update: We need to find total of hours of storedid based on @clientid


DECLARE @MondayThisWeek DATETIME
SELECT  @MondayThisWeek = DATEADD(wk,
                             DATEDIFF(wk, 0, GETDATE()),
                             0);

DECLARE @ClientId INT;
SELECT @ClientId = 1;



SELECT  cd.StoreId,
    SUM(cd.HOURS) AS Hours
FROM    ClientData cd
WHERE   cd.Date >= DATEADD(ww, -52, @MondayThisWeek)
    AND cd.Date < DATEADD(ww, -27, @MondayThisWeek)
    AND cd.ClientId = @ClientId 
GROUP BY cd.StoreId;

SELECT  cd.StoreId,
    SUM(cd.HOURS) AS Hours  
FROM    ClientData cd
WHERE   cd.Date >= DATEADD(ww, -27, @MondayThisWeek)
    AND cd.Date < @MondayThisWeek
    AND cd.ClientId = @ClientId
GROUP BY cd.StoreId;
0

精彩评论

暂无评论...
验证码 换一张
取 消