表ABCD如何獲得零數據時不存在特定字段
Group1 Class C1 A C2 A C3 B C4 C C1 A
這裏我有表,即時通訊試圖獲得如下因素 結果
OUTPUT:(使用這種格式要求表ABCD
Group1 Class Count C1 A 2 C1 B 0 C1 C 0 C2 A 1 C2 B 0 C2 C 0 C3 A 0 C3 B 0 C3 C 1
我想要實現這個使用SQL查詢。謝謝你在前進,即時通訊相當新的查詢WRT甲骨文所以請幫助我的查詢。
表ABCD如何獲得零數據時不存在特定字段
Group1 Class C1 A C2 A C3 B C4 C C1 A
這裏我有表,即時通訊試圖獲得如下因素 結果
OUTPUT:(使用這種格式要求表ABCD
Group1 Class Count C1 A 2 C1 B 0 C1 C 0 C2 A 1 C2 B 0 C2 C 0 C3 A 0 C3 B 0 C3 C 1
我想要實現這個使用SQL查詢。謝謝你在前進,即時通訊相當新的查詢WRT甲骨文所以請幫助我的查詢。
您可以使用下面的查詢來獲取結果。這創建了每個group1
和每個class
的列表。一旦你的列表中,那麼您可以在您的原始表算多少比賽:
select s.group1,
s.class,
count(d.class) tot
from
(
select distinct a.group1, c.class
from abcd a
cross join
(
select distinct class
from abcd
) c
) s
left join abcd d
on s.group1 = d.group1
and s.class = d.class
group by s.group1, s.class
order by s.group1, s.class;
此作品在SQL Server
SELECT O.*
,CASE WHEN I.[Group1] IS NULL THEN 0 ELSE 1 END AS Cnt
FROM Table1 I RIGHT JOIN
(
SELECT DISTINCT T1.[Group1],T2.[Class] FROM Table1 T1
CROSS JOIN Table1 T2
) O ON I.[Group1] = O.[Group1] AND I.[Class] = O.[Class]
編輯
SELECT O.*
,SUM(CASE WHEN I.[Group1] IS NULL THEN 0 ELSE 1 END) AS Cnt
FROM Table1 I RIGHT JOIN
(
SELECT DISTINCT T1.[Group1],T2.[Class] FROM Table1 T1
CROSS JOIN Table1 T2
) O ON I.[Group1] = O.[Group1] AND I.[Class] = O.[Class]
GROUP BY O.[Group1],O.[Class]
首先感謝代碼片段,但我想這隻適用於計數爲0或1的情況。如果計數增加,請退出我 – user2568275
@ user2568275檢查更新的答案 – bvr
不知道我理解正確你的問題,但我想你想要的東西喜歡這樣的:
with all_combinations as (
select distinct g.group1, c.class
from (
select group1
from foobar
) g
cross join (
select class
from foobar
) c
)
select ac.group1, ac.class, count(f.group1)
from all_combinations ac
left join foobar f on f.group1 = ac.group1 and f.class = ac.class
group by ac.group1, ac.class
order by ac.group1, ac.class
SQLFiddle演示:http://sqlfiddle.com/#!4/9be9f/1
WITH grp AS (
SELECT DISTINCT grp AS grp FROM abcd
)
, cls AS (
SELECT DISTINCT cls AS cls FROM abcd
)
SELECT g.grp, c.cls
, COALESCE(a.cnt, 0) AS the_count
FROM grp g
FULL OUTER JOIN cls c ON 1=1
LEFT JOIN (
SELECT DISTINCT grp, cls, COUNT(*) as cnt
FROM abcd
GROUP BY grp,cls
) a ON a.grp = g.grp AND a.cls = c.cls
ORDER BY g.grp ,c.cls
;
什麼樣的SQL這是MS我?? – AlvinArulselvan
你已經試過了什麼SQL? –
請讓我知道投票前的原因請即時發佈疑問 – user2568275