2012-01-28 8 views
1

表1は、各値のために

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 

'fromとto dateが現在の日付よりも大きいため、' Bは0です。

このcalcuatlion ..のクエリを作成する方法プラスワンは、日付の差分に追加

答えて

1
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 

任意の提案....一部の日を考慮するためです。

関連する問題