2012-01-28 69 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 

'B是0,因为从当前日期开始大于当前日期。

如何为这个计算查询..?

任何建议....

回答

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 

的加一加的日期差异是考虑到部分天。

相关问题