2011-08-18 90 views
0

希望你能幫助我下面,我有以下看法availble的: DD/MM/YYYYSQL查詢的問題(算上每個月日期)

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 

其中YYYY.MM創建取決於Sdate和EDate之間的差異。 並且DAYS是正確月份的開始日期和結束日期之間的差異 而TIMES是StartDate在該月發生的次數 收入根據有多少天分裂。

+1

還值得一提的是您在提出SQL問題時使用的數據庫。 –

+0

爲什麼在結果集中''2011.01'的收入'500'和'2011.02'的'100'?它是以某種方式計算出來的,還是隻是從原始數據中提取出來的(在這種情況下,您可能會混淆)?此外,範圍可以超過2個月,比如'28/01/2011..05/03/2011'?如果是這樣的話,是否應該考慮範圍內的所有月份或僅僅是開始和結束的月份?在這種情況下應如何計算收入? –

回答

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