MSSQL数据行变换列的方法(mssql 行变列)
MSSQL数据行变换列的方法
MSSQL是微软非常流行的关系型数据库,能够帮助用户处理大量数据、实现复杂数据。采用T-SQL语言,有时在执行查询时候需要对取出的数据做行变换列的操作,比如把数据行变换列,将每行按照不同的头部拆分,成为非常符合阅读规律的数据结果,用于分析或生成报表等。MSSQL数据行变换列的方法有以下几种:
1、使用CROSS APPLY函数:CROSS APPLY函数允许使用关联的属性结果和类型,可以从行把属性变换成列。下面提供一段相关代码 how:
SELECT id, col1, col2, col3
FROM tablename CROSS APPLY
(VALUES(col1),(col2),(col3))
AS A(Fruits)
2、使用PIVOT表:PIVOT表是一种特殊型的数据变换,即行转列。它是一种有效的把行变换列的方法。
比如一个原始数据集如下表:
id | fruitsa | fruitsb
————————–
1 | apple | pineapple
2 | pear | cherry
3 | watermelon | grapes
下面提供一段相关代码来转换它
SELECT id,
MAX(CASE WHEN fruits=’apple’ THEN fruits END) as apple,
MAX(CASE WHEN fruits=’pineapple’ THEN fruits END) as pineapple,
MAX(CASE WHEN fruits=’pear’ THEN fruits END) as pear,
MAX(CASE WHEN fruits=’cherry’ THEN fruits END) as cherry,
MAX(CASE WHEN fruits=’watermelon’ THEN fruits END) as watermelon,
MAX(CASE WHEN fruits=’grapes’ THEN fruits END) as grapes
FROM tablename
GROUP BY id
3、使用UNPIVOT函数:UNPIVOT函数可以把行变换列,比如将一列的单元格变成多个列的单元格,把一行变成多行。
例如一个原始数据集如下表:
id | fruits1 | fruits2
————————–
1 | apple | pineapple
2 | pear | cherry
3 | watermelon | grapes
下面提供一段相关代码来转换它
SELECT id, fruits,
VALUE
FROM tablename
UNPIVOT
(VALUE FOR Fruits IN
(fruits1,fruits2)
)AS U
总结:MSSQL数据行变换列的方法包括CROSS APPLY函数、PIVOT表、UNPIVOT函数,可以有效的把行变换列,灵活处理复杂数据。