Как найти сумму между датами для каждого значения - PullRequest
1 голос
/ 28 января 2012

Table1

Period  datefrom   dateto      code  id

01/2012 18/12/2011 28/12/2011  A     Emp1
01/2012 11/01/2012 14/01/2012  B     Emp1
02/2012 20/12/2011 25/12/2011  A     Emp2
02/2012 01/02/2012 08/01/2012  B     Emp2 'from and to date is greater than current date.
.....

я хочу взять общее значение между datefrom и dateto с проверкой системной даты

Ожидаемый результат

ID     PERIOD   A  B TOTAL

Emp1   01/2012  11 4 15
Emp2   02/2012  6  0 6 

'B равно 0, потому что дата и время больше текущей даты.

Как сделать запрос для этого вычисления ..?

Любые предложения ....

1 Ответ

1 голос
/ 28 января 2012
SET DATEFORMAT dmy

SELECT
    ID,
    Period,
    (SELECT ISNULL(SUM(DATEDIFF(DAY,datefrom,dateto) + 1),0)
        FROM Test 
        WHERE DATEDIFF(DAY,datefrom,dateto) > 0 and code = 'A'
        and x.Period = Period and x.id = id)
     as ACode,
    (SELECT ISNULL(SUM(DATEDIFF(DAY,datefrom,dateto) + 1),0)
        FROM Test 
        WHERE DATEDIFF(DAY,datefrom,dateto) > 0 and code = 'B'
        and x.Period = Period and x.id = id)
     as Bcode
FROM TABLENAME x
GROUP BY
    Period,
    ID

Плюс, добавленный к разнице дат, предназначен для учета неполных дней.

...