[英]Get count against each distinct value in SQL Server
我有一個像這樣的表tbl_demo
:
aliasname is_correct
10 INCORRECT
10 INCORRECT
10 INCORRECT
10 CORRECT
10 CORRECT
10 NOT SOLVED
9 INCORRECT
9 INCORRECT
9 CORRECT
我創建了一個查詢:
select
aliasname,
count(*) as quest_count,
is_correct
from
tbl_demo
group by
aliasname, is_correct order by aliasname
我得到這樣的輸出
aliasname quest_count is_correct
---------------------------------
10 2 CORRECT
10 3 INCORRECT
10 1 NOT SOLVED
9 1 CORRECT
9 2 INCORRECT
但我希望在9中0,而不是解決
就像這樣的一行
9 0 NOT SOLVED
這可以輕松實現,以及如何實現?
您可以通過使用cross join
生成所有可能的組合,並使用left join
來引入原始數據。 其余的只是聚合:
select a.aliasname, count(d.aliasname) as quest_count, ic.is_correct
from (select distinct aliasname from tbl_demo
) a cross join
(select distinct is_correct from tbl_demo
) ic left outer join
tbl_demo d
on d.aliasname = a.aliasname and d.is_correct = ic.is_correct
group by a.aliasname, ic.is_correct;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.