格式如下:
1 清华大学 2016
2 清华大学 2016
1 清华大学 2015
1 北京大学 2016
……
这样的结构
怎样分组查询达到横竖列效果
\ 2016 2015
清华大学 1/2 1
北京大学 1
1 清华大学 2016
2 清华大学 2016
1 清华大学 2015
1 北京大学 2016
……
这样的结构
怎样分组查询达到横竖列效果
\ 2016 2015
清华大学 1/2 1
北京大学 1
SUM(CASE WHEN years=2016 THEN university ELSE 0 END) AS '2016年',
SUM(CASE WHEN years=2015 THEN university ELSE 0 END) AS '2015年'
FROM TableName
GROUP BY CONVERT(university,SIGNED)
后面的结果不正确,
大致是:
-----------------------------------------------------
university 2016年 2015
清华大学 6 6
北京大学 20 14
------------------------------------------------------
怎样把university作为条件加到when里面
SUM(CASE WHEN years=2016 THEN university ELSE 0 END) AS '2016年',
SUM(CASE WHEN years=2015 THEN university ELSE 0 END) AS '2015年'
FROM TableName
GROUP BY CONVERT(university,SIGNED)
后面的结果不正确,
大致是:
-----------------------------------------------------
university 2016年 2015
清华大学 6 6
北京大学 20 14
------------------------------------------------------
怎样把university作为条件加到when里面就是说,when years = 2016 and university = university? 这么吗
MySQL交叉表
在某些数据库中有交叉表,但在MySQL中却没有这个功能,但网上看到有不少朋友想找出一个解决方法,特发贴集思广义。http://topic.csdn.net/u/20090530/23/0b782674-4b0b-4cf5-bc1a-e8914aaee5ab.html?96198现整理解法如下:数据样本: create table tx( id int primary key, c1 c...
CONVERT(university,SIGNED)这个没必要加
SELECT university,
MAX(CASE WHEN years = 2016 THEN ids END) AS `2016`,
MAX(CASE WHEN years = 2015 THEN ids END) AS `2015`
FROM
(
SELECT university,
years,
GROUP_CONCAT(id ORDER BY id SEPARATOR '/') ids
FROM
(
SELECT 1 id ,'清华大学' university, 2016 years UNION ALL
SELECT 2 ,'清华大学', 2016 UNION ALL
SELECT 1 ,'清华大学', 2015 UNION ALL
SELECT 1 ,'北京大学', 2016
)t
GROUP BY university,years
)t
GROUP BY university
ORDER BY university DESC
mysql> SELECT university,
-> MAX(CASE WHEN years = 2016 THEN ids END) AS `2016`,
-> MAX(CASE WHEN years = 2015 THEN ids END) AS `2015`
-> FROM
-> (
-> SELECT university,
-> years,
-> GROUP_CONCAT(id ORDER BY id SEPARATOR '/') ids
-> FROM
-> (
-> SELECT 1 id ,'清华大学' university, 2016 years UNION ALL
-> SELECT 2 ,'清华大学', 2016 UNION ALL
-> SELECT 1 ,'清华大学', 2015 UNION ALL
-> SELECT 1 ,'北京大学', 2016
-> )t
-> GROUP BY university,years
-> )t
-> GROUP BY university
-> ORDER BY university DESC
-> ;
+------------+------+------+
| university | 2016 | 2015 |
+------------+------+------+
| 清华大学 | 1/2 | 1 |
| 北京大学 | 1 | NULL |
+------------+------+------+
2 rows in set (0.03 sec)