mysql dbo_mysql-双重分组
我的表有兩列:名稱和等級.看起來像這樣:
NAME | GRADE
Adam | 1
Adam | 2
Adam | 2
Adam | 3
Frank | 2
Frank | 1
現(xiàn)在,我想創(chuàng)建如下所示的視圖:
NAME | GRADE 1 | GRADE 2 | GRADE 3
Adam | 1 | 2 | 1
Frank | 1 | 1 | 0
我寫了這個:
SELECT Name,
(SELECT COUNT(Grade)
FROM dbo.Rodzaj
WHERE Grade = '1') as Grade_1,
(SELECT COUNT(Grade)
FROM dbo.Rodzaj
WHERE Grade = '2) as Grade_2,
(SELECT COUNT(Grade)
FROM dbo.Rodzaj
WHERE Grade = '3') as Grade_3
FROM dbo.Rodzaj
GROUP BY Name
但這行不通…
我將不勝感激任何幫助
解決方法:
您要查找的內(nèi)容稱為“數(shù)據(jù)透視表”,它由一系列CASE語句完成,這些語句對每個條件應(yīng)用1或0,然后對1和0進(jìn)行SUM()檢索計(jì)數(shù).
SELECT
NAME,
SUM(CASE WHEN GRADE = 1 THEN 1 ELSE 0 END) AS GRADE1,
SUM(CASE WHEN GRADE = 2 THEN 1 ELSE 0 END) AS GRADE2,
SUM(CASE WHEN GRADE = 3 THEN 1 ELSE 0 END) AS GRADE3
FROM Rodzaj
GROUP BY NAME
請注意,如果您需要具有動態(tài)的列數(shù),則必須使用腳本語言和循環(huán)來構(gòu)造查詢. (或存儲過程中的循環(huán))
標(biāo)簽:sql,mysql
來源: https://codeday.me/bug/20191201/2078623.html
總結(jié)
以上是生活随笔為你收集整理的mysql dbo_mysql-双重分组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信抢红包插件 android 8.0,
- 下一篇: mysql5.6 memcached_M