iT邦幫忙

0

SQL UNION ALL & LEFT JOIN 問題

沒有程式背景的小女子我剛學SQL幾天 表格(TABLE1)如下
要怎麼樣算出a,b,c,d,e的完成y數量以及未完成數量?

name (FR10)專案完成否
a y
c y
e n
e n
a n
b y
c y

SELECT NAME,COUNT(NAME)
FROM TABLE1
WHERE FR10='Y' OR FR10='P'
GROUP BY NAME
UNION ALL(
SELECT NAME,COUNT(NAME)
FROM TABLE1
WHERE FR10='N'
GROUP BY NAME
)
我用UNION ALL 但是只能把他們連在一起 不知道要怎麼變成以下的表格呈現方式(如下,數字是亂打的)

NAME 未結 已結
A 4 5
B 4 3
C 5 2
D 1 5
E 5 7
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
rogeryao
iT邦超人 8 級 ‧ 2021-01-05 12:22:54
最佳解答
CREATE TABLE TABLE1 (
NAME varchar(40) NULL ,
FR10 varchar(40) NULL);

INSERT INTO TABLE1 (NAME,FR10)
VALUES 
('a','y'),
('c','y'),
('e','n'),
('e','n'),
('a','n'),
('b','y'),
('c','y');
SELECT NAME,SUM(CASE WHEN FR10='n' THEN 1 ELSE 0 END) AS '未結',
SUM(CASE WHEN FR10='y' THEN 1 ELSE 0 END) AS '已結'
FROM TABLE1
GROUP BY NAME
ORDER BY NAME

Demo

obarisk iT邦研究生 2 級 ‧ 2021-01-06 10:22:48 檢舉

謝謝大大們,小妹我先在這裡跟你們道謝QAQ

我要發表回答

立即登入回答