数据库中的行转列和列转行

参考:
MySQL 实现行转列SQL
sql的行转列(PIVOT)与列转行(UNPIVOT)

行转列:把表中特定列的数据去重后做为列名,通常数据条数变少;
列转行:可以说是行转列的反转,把表中特定列做为每一行数据对应列的值,通常数据条数变多;

1.常用方法:

1.1.PIVOT与UNPIVOT

1.2.根据特定列进行分组,对每个要变成列的值分别进行max、case when处理

SELECT
	SNAME,
	MAX(
		CASE CNAME
		WHEN 'JAVA' THEN
			SCORE
		ELSE
			0
		END
	) JAVA,
	MAX(
		CASE CNAME
		WHEN 'mysql' THEN
			SCORE
		ELSE
			0
		END
	) mysql
FROM
	stdscore
GROUP BY

1.3.同表进行表连接,对每个要变成列的值分别进行where条件处理

SELECT DISTINCT  a.sname,
(SELECT score FROM stdscore b WHERE a.sname=b.sname AND b.CNAME='JAVA' ) AS 'JAVA',
(SELECT score FROM stdscore b WHERE a.sname=b.sname AND b.CNAME='mysql' ) AS 'mysql'
FROM stdscore a

1.4.写T-SQL

posted on 2018-11-26 10:38  碎羽love星谊  阅读(505)  评论(0编辑  收藏  举报

导航