我是新手试图创建一个SQL查询,以查找每个剧院在前一年(即所有12个月)每月售出的票数。如果收集金额为空或空白,我需要在该年度中将任何此类给定月份的输出生成为零。
我有两张表如下:
表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或null值。我无法生成零值的缺失月份。我尝试使用简单的左外连接,但数据输出行仍未显示月/年和零值。
我需要按如下方式生成输出:
输出
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 :(得分:2)
您可以在每个影院和月份之间使用CROSS JOIN
,然后使用LEFT JOIN
执行Table2
:
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];