![](/img/trans.png)
[英]Getting a field from a table that is not in the left outer join in the same query
[英]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.