这个问题在这里已经有答案了:
如何在mysql中返回pivot表输出(9个答案)
两年前关门了。
我的数据库里有一个表
+------+------+----------+
| id | dept | location |
+------+------+----------+
| 1 | eee | chennai |
| 2 | ece | chennai |
| 3 | eee | chennai |
| 4 | ece | chennai |
| 5 | eee | cbe |
| 6 | ece | trichy |
| 7 | mech | madurai |
+------+------+----------+
我需要换位一列时的id计数。有人能给我建议一下查询结果吗
+---------+------+-----+------+
| location| eee | ece | mech |
+---------+------+-----+------+
| chennai | 2 | 2 | 0 |
| cbe | 1 | 0 | 0 |
| trichy | 0 | 1 | 0 |
| madurai | 0 | 0 | 1 |
+---------+------+-----+------+
谢谢你的帮助
3条答案
按热度按时间cuxqih211#
尝试
SUM
与CASE
```create table test(id INT, dept VARCHAR(20), location VARCHAR(100))
insert into test values
(1,'eee','chennai'),
(2,'ece','chennai'),
(3,'eee','chennai'),
(4,'ece','chennai'),
(5,'eee','cbe'),
(6,'ece','trichy'),
(7,'mech','madurai')
SELECT
location AS city,
SUM(CASE WHEN dept = 'eee' THEN 1 ELSE 0 END) eee,
SUM(CASE WHEN dept = 'ece' THEN 1 ELSE 0 END) ece,
SUM(CASE WHEN dept = 'mech' THEN 1 ELSE 0 END) mech
FROM test
GROUP BY location
city eee ece mech
cbe 1 0 0
chennai 2 2 0
madurai 0 0 1
trichy 0 1 0
knsnq2tg2#
lyfkaqu13#
输出