希望你能帮我解决以下问题,我有以下观点: DD / MM / YYYY
ENTITY | StartDate | EndDate | CodeA | CodeB | Revenue | Currency
AZERT | 01/01/2011 | 02/01/2011 | SU | BOLD | 100 | EUR
AZERT | 28/01/2011 | 02/02/2011 | SU | BOLD | 500 | EUR
有人可以帮助查询来提取数据,以便我得到以下总和吗?
ENTITY | YYYY.MM | CodeA | CodeB | DAYS | TIMES | Revenue | Currency
AZERT | 2011.01 | SU | BOD | 5 | 2 | 500 | EUR
AZERT | 2011.02 | SU | BOD | 1 | 0 | 100 | EUR
根据Sdate和EDate之间的差异创建YYYY.MM。 DAYS是正确月份的开始和结束日之间的差异 TIMES是StartDate在该月发生的次数 收入分配取决于有多少天。
答案 0 :(得分:0)
假设您使用的是SQL Server 2005或更高版本,这会有用吗?
SELECT
DATEADD(dd, -DAY(EndDate + 1,EndDate)) -- Get first day of month for EndDate
,CodeA
,CodeB
,SUM(DATEDIFF(dd,StartDate, EndDate)) AS 'DAYS'
FROM
TABLE1
GROUP BY
DATEADD(dd, -DAY(EndDate + 1,EndDate))
,CodeA
,CodeB