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函数,可以有效的把行变换列,灵活处理复杂数据。


数据运维技术 » MSSQL数据行变换列的方法(mssql 行变列)