Table A
類別 名稱 閱讀狀態 我的最愛
---------------------------------
小說 笑傲江湖 N Y
小說 鹿鼎記 Y N
小說 碧血劍 Y N
小說 書劍恩仇錄 Y N
轉為
Table B
類別 總筆數 已閱讀完筆數 喜愛筆數
--------------------------------------------
小說 4 3 1
1 2 3 4 5 6 7 8 9 10 11 12 13 | --建立測試資料表 CREATE TABLE A ( category varchar(10) NULL, name nvarchar(20) NULL, reading varchar(10) NULL, mylove varchar(10) NULL ) ON [PRIMARY] insert into A (category,name,reading,mylove) values ('小說','笑傲江湖','N','Y') insert into A (category,name,reading,mylove) values ('小說','鹿鼎記','Y','N') insert into A (category,name,reading,mylove) values ('小說','碧血劍','Y','N') insert into A (category,name,reading,mylove) values ('小說','書劍恩仇錄','Y','N') |
解法
利用case判斷Y進行加總
1 2 3 4 5 6 | select category as 類別, COUNT(*) as 總筆數, sum ( case when reading='Y' then 1 else 0 end) as 已閱讀完筆數, --若reading=Y回傳1,將所有值加總 sum ( case when mylove='Y' then 1 else 0 end) as 已閱讀完筆數 --若mylove=Y回傳1,將所有值加總 from A group by category |
沒有留言:
張貼留言