我需要找到该特定客户的最长日期,该日期将被视为最新日期(或当前日期)。然后,从那里我需要回到52周到27周并计算总和(小时)。 26周至最新日期(或当前日期)并计算总和(小时)。
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
请让我知道如何在SQL中计算这个以获得输出?如果您有疑问,请问我。
答案 0 :(得分:2)
最简单的方法是为此使用两个查询;第一个获取边界日期,第二个计算总数。你可以把它全部放到一个查询中,但我认为它不会产生太大的影响。
DECLARE
@BeginDate datetime,
@MidDate datetime
SELECT
@BeginDate = DATEADD(wk, -52, MAX(period)),
@MidDate = DATEADD(wk, -25, MAX(period))
FROM TableName
WHERE ClientID = @ClientID
SELECT
SUM(CASE
WHEN period >= @BeginDate AND period < @MidDate THEN hours
ELSE 0
END) AS HoursInFirstHalf,
SUM(CASE
WHEN period >= @MidDate THEN hours
ELSE 0
END) AS HoursInLastHalf
FROM TableName
WHERE ClientID = @ClientID