2016-01-21 109 views
1

我使用下面的SQL代碼來獲取預訂的計數一年的每四:總結一下多個值

SELECT 
    Year, 
    ISNULL(QPivot.[1],0) As [Quater 1], 
    ISNULL(QPivot.[2],0) As [Quater 2], 
    ISNULL(QPivot.[3],0) As [Quater 3], 
    ISNULL(QPivot.[4],0) As [Quater 4] 
FROM 
    (SELECT 
     YEAR(checkInDate) [Year], 
     DATEPART(QUARTER, checkInDate) [Quarter], 
     COUNT(1) [Reservation Count] 
    FROM 
     ReservationRoom 
    GROUP BY 
     YEAR(checkInDate), DATEPART(QUARTER, checkInDate)) AS QuarterlyData 
PIVOT(SUM([Reservation Count]) 
FOR QUARTER IN ([1],[2],[3],[4])) AS QPivot 

這是我從查詢得到的結果:

[my result

但是現在我想在一列中添加[Total],它總結了所有季度的所有值。例如,2015年是1,2016年是8.

任何人都可以幫助我嗎?

+2

請標記使用的dbms產品。 (有些非ANSI SQL ......) – jarlh

+0

@jarlh有沒有「不是MySQL」的標籤? –

+0

@TimBiegeleisen,在這種情況下,我認爲這不夠... – jarlh

回答

1

我一般找到支點查詢有點難以閱讀。所有你的查詢所做的每年都有一個結果行(所以按年分組),並計算季度和總數(所以有一些計數表達式)。查詢可以很容易地寫成:

select 
    year(checkindate) as year, 
    count(case when datepart(quarter, checkindate) = 1 then 1 end) as q1, 
    count(case when datepart(quarter, checkindate) = 2 then 1 end) as q2, 
    count(case when datepart(quarter, checkindate) = 3 then 1 end) as q3, 
    count(case when datepart(quarter, checkindate) = 4 then 1 end) as q4, 
    count(*) as total 
from reservationroom 
group by year(checkindate) 
order by year(checkindate); 
1

嘗試添加四個季度在一起:

SELECT t.Year, t.[Quarter 1], t.[Quarter 2], t.[Quarter 3], t.[Quarter 4], 
    (t.[Quarter 1] + t.[Quarter 2] + t.[Quarter 3] + t.[Quarter 4]) AS Total 
FROM 
(
    SELECT Year, ISNULL(QPivot.[1],0) As [Quater 1], ISNULL(QPivot.[2],0) As [Quater 2], 
     ISNULL(QPivot.[3],0) As [Quater 3], ISNULL(QPivot.[4],0) As [Quater 4], 
    FROM 
    (
     SELECT YEAR(checkInDate) [Year], DATEPART(QUARTER, checkInDate) [Quarter], COUNT(1) [Reservation Count] 
     FROM ReservationRoom 
     GROUP BY YEAR(checkInDate), DATEPART(QUARTER,checkInDate)) AS QuarterlyData 
     PIVOT(SUM([Reservation Count]) 
     FOR QUARTER IN ([1],[2],[3],[4]) 
    ) AS QPivot 
) t 
+1

感謝您的幫助..但是我得到這個'QPivot.Year'在選擇列表中是無效的,因爲它不包含在聚合函數中或GROUP BY子句。 – Xion

+0

我可以建議你嘗試包裝這個查詢並選擇年份,季度和總數。 –