2017-03-06 20 views
0

我是新手,想創建一個SQL查詢來查找每個劇院在過去一年中每月售出門票數量(即所有12個月) 。如果收集量爲空或空白,那麼我需要在該年的任何一個月中產生一個輸出爲零。如何在sql server中連續提取月份數據(即使存在空值)

我有兩個表如下所述:

表1:

Month_Number Year 
1     2016 
2     2016 
3     2016 
4     2016 
5     2016 
6     2016 
7     2016 
8     2016 
9     2016 
10     2016 
11     2016 
12     2016 

表2:

Theater month Amount_In_Thousands 
ABC   1  165 
ABC   3  70 
ABC   4  102 
GHI   1  45 
GHI   2  70 
GHI   3  42 
GHI   4  57 
ABC   6  122 
ABC   7  67 
ABC   8  22 
ABC   9  80 
ABC   11  46 
ABC   12  38 

您可能已經注意到了 'ABC' 劇院有對於第2個月,第5個月和第10個月,它的值爲0或空值。我無法用ze生成這些缺失的月份ro值。我嘗試用簡單的左外連接但數據輸出行仍然不顯示月/年和值。

我需要產生輸出如下:

輸出

Movie_Theators Month Amount_In_Thounds 
ABC    1 165 
ABC    2 0 * 
ABC    3 70 
ABC    4 102 
ABC    5 0 * 
ABC    6 122 
ABC    7 67 
ABC    8 22 
ABC    9 80 
ABC    10 0 * 
ABC    11 46 
ABC    12 38 
GHI    1 45 
GHI    2 70 
GHI    3 42 
GHI    4 57 

任何人可以幫我如何寫sql腳本,以產生輸出,如上圖所示。提前謝謝你。

+0

只需使用一個',左JOIN'代替'INNER JOIN' –

+0

顯示你有什麼迄今爲止嘗試過。發佈您的查詢。 –

回答

2

您可以使用每個戰區和月 - 年之間的CROSS JOIN,然後執行LEFT JOINTable2

SELECT A.Theater, 
     B.Month_Number, 
     B.[Year], 
     ISNULL(C.Amount_In_Thousands,0) Amount_In_Thousands 
FROM ( SELECT DISTINCT Theater 
     FROM dbo.Table2) A -- or use a dbo.Theater table if you have one 
CROSS JOIN dbo.Table1 B 
LEFT JOIN dbo.Table2 C 
    ON A.Theater = C.Theater 
    AND B.Month_Number = C.[month] 
    AND B.[Year] = C.[Year]; 
+0

您的回答非常好,準確。非常感謝您的快速幫助。我最好選擇你的答案。 – desi

相關問題