Рассчитать сумму часов из еженедельных баз? - PullRequest
0 голосов
/ 09 мая 2011

Мне нужно найти максимальную дату для этого конкретного клиента, которая будет считаться последней датой (или текущей датой).Затем оттуда мне нужно вернуться на 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, чтобы получить вывод?Если у вас есть вопрос, спросите меня.

1 Ответ

2 голосов
/ 09 мая 2011

Для этого проще всего использовать два запроса;первое, чтобы получить граничные даты, второе, чтобы вычислить итоги.Вы можете свернуть все это в один запрос, но я не думаю, что это будет иметь большое значение.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...