行转列:SQL SERVER PIVOT与用法解释
1创建一张临时表
CREATE TABLE #week_income(
week NVARCHAR(20) ,
income INT
)
2向临时表中插入数据
INSERT INTO #week_income
SELECT '星期一',1000
UNION ALL
SELECT '星期二',2000
UNION ALL
SELECT '星期三',3000
UNION ALL
SELECT '星期四',4000
UNION ALL
SELECT '星期五',5000
UNION ALL
SELECT '星期六',6000
UNION ALL
SELECT '星期日',7000
3一般的查询是这样的 SELECT * FROM #week_income

但是这样显示的效果是不好的,如果换个sql查询,例如 使用了PIVOT语法,对行列进行转换
SELECT [星期一],[星期二],[星期三],[星期四],[星期五],[星期六],[星期日]
FROM #week_income
PIVOT (
SUM(income)FOR week IN ([星期一],[星期二],[星期三],[星期四],[星期五],[星期六],[星期日])
)a
得到的结果是这样的

4 然后再把转换后的表格再次的转为原来的形式 ,先准备一个临时表 #cc
SELECT * INTO #cc
FROM #week_income
PIVOT
(
SUM(income)FOR week IN (星期一,星期二,星期三,星期四)
)a
临时表的内容格式如下

然后通过unpivot sql语法转换
SELECT * FROM #cc
UNPIVOT (income FOR week IN (星期一,星期二,星期三,星期四))b

作者:RichardCui
出处:https://www.cnblogs.com/yachao1120/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。该文章也同时发布在我的独立博客中-RichardCuiBlog。

浙公网安备 33010602011771号