样品表
CustomerId | VoucherId | CategoryId | StartDate | EndDate
-------------------------------------------------------------
10 | 1 | 1 | 2013-09-01| 2013-09-30
10 | 1 | 2 | 2013-09-01| 2013-09-30
11 | 2 | 1 | 2013-09-01| 2013-11-30
11 | 2 | 2 | 2013-09-01| 2013-11-30
11 | 2 | 3 | 2013-09-01| 2013-11-30
10 | 3 | 1 | 2013-10-01| 2013-12-31
10 | 3 | 2 | 2013-10-01| 2013-12-31
11 | 4 | 1 | 2013-12-01| 2014-04-30
在上面的示例记录中,我想找出客户凭证覆盖的总月数
我需要表格中的输出
CustomerId | Months
--------------------
10 | 4
11 | 8
问题是凭证可以有多行用于不同的 CategoryId...
我将凭证涵盖的月份计算为 DATEDIFF(MM, StartDate, EndDate) + 1...
当我应用 SUM(DATEDIFF(MM, StartDate, EndDate)) GROUP BY VoucherId, StartDate, EndDate 时,我给出了错误的结果,因为 VoucherId 有多行......
我得到这样的东西......
CustomerId | Months
--------------------
10 | 8
11 | 14
CategoryId 在这种情况下没用
谢谢