SQL查询问题(每个月的计数日期)

时间:2011-08-18 13:05:33

标签: sql

希望你能帮我解决以下问题,我有以下观点: 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在该月发生的次数 收入分配取决于有多少天。

1 个答案:

答案 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