簡體   English   中英

使用左外部聯接在同一表上獲取計數的SQL查詢

[英]SQL query for getting count on same table using left outer join

我有一個表格,需要從該表格中將計數分為兩列。

該表有兩列,一列為datetime列,另一列為成功值(-1,1,0),我正在尋找的是這樣的:

每個月的成功價值計數:

月----成功--------計數
11 ------- -1 ------- 50

11 ------- 1 --------- 50

11 ------- 0 ------- 50

12 ------- -1 ------- 50

12 ------- 1 ------- 50

12 ------- 0 ------- 50

如果一個月沒有成功值,則計數應為null或零。 我也嘗試過使用左外部聯接,但沒有用,它使計數錯誤。

您需要將所有可用月份與3個成功值交叉連接,以建立虛擬矩陣,然后可以將其與實際數據保持連接

select m.month, s.success, COUNT(t.month)
from (select distinct MONTH from tbl) m
cross join (select -1 success union all select 1 union all select 0) s
left join tbl t on t.month = m.month and t.success = s.success
group by m.month, s.success

如果您還需要缺少月份,則可以通過更改上面的子查詢“ m”來完成,只是稍微復雜一點。

@updated Count(*)對於左連接總是返回至少1。 左邊連接的右邊的count(colname)是正確的。

您可能需要一個僅包含1-12值的表進行連接,以便獲得零計數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM