MSSQL实现行列互换的技巧(mssql行列互换)
MSSQL实现行列互换的技巧
在数据库开发中,行列互换是一种极其常见的操作,尤其是在对表格数据的列的分析时,更是不可或缺。下面介绍一种在MSSQL中实现行列互换的技巧。
首先,构建一个现有的表格数据,如Product表:
Product(Pid int identity(1,1),Pname nvarchar(50))
表中记录了商品的Pid与Pname:
1铅笔
2橡皮
3书本
要想实现行列互换,我们可以使用MSSQL所提供的PIVOT函数,示例如下:
SELECT Pname, [1] AS P1,[2] AS P2,[3] AS P3 FROM (SELECT Pname,Pid FROM Product) src PIVOT (MAX(Pname) FOR Pid IN ([1],[2],[3])) AS piv
结果为:
P1 P2 P3
铅笔 橡皮 书本
可以看出,使用PIVOT函数实现了原表中行列互换。常用于报表形式展示时,将行放到列列出。
除了PIVOT函数,我们还可以使用CASE函数实现行列互换,栗子如下:
Select Pid,sum(CASE Pname WHEN ‘铅笔’ THEN 1 ELSE 0 END) AS count_P4,sum(CASE Pname WHEN ‘橡皮’ THEN 1 ELSE 0 END) AS count_P5,sum(CASE Pname WHEN ‘书本’then 1 ELSE 0 END) as count_P6 from Product group by Pid
结果为:
P4 P5 P6
1 1 1
总结:使用MSSQL的PIVOT函数与CASE函数,我们可以很方便地实现行列互换式数据表转换,同时在常见的报表展示向中,也可以更好地呈现数据。