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函数,我们可以很方便地实现行列互换式数据表转换,同时在常见的报表展示向中,也可以更好地呈现数据。


数据运维技术 » MSSQL实现行列互换的技巧(mssql行列互换)