MSSQL实现列数据转换行数据的方法(mssql 列转行)

MSSQL实现列数据转换行数据的方法

Autonomous Database 是 Oracle 推出的一种新型云数据库,可以快速和轻松地管理企业数据。MSSQL是微软发布的一款关系型数据库管理系统,可以使用T-SQL、SSIS等多种方式实现数据转换。本文将介绍MSSQL实现列数据转换行数据的一种方法。

以下是一个示例,我们需要将表格中的数据从列转换成行:

表格:

| Name | Age |

|——-|—–|

| Mike | 20 |

| Tony | 25 |

| Alisa | 30 |

我们可以使用以下T-sql语句将其转换为行:

“`sql

SELECT Name, Age FROM

(SELECT name,

SUBSTRING_INDEX(

CONCAT(name, ‘,’, age), ‘,’, -1

) Age

FROM testTable

) AS S


输出:

| Name | Age |
|-------|-----|
| Mike | 20 |
| Tony | 25 |
| Alisa | 30 |

以上这种方法使用CONCAT函数将多个列的数据连接起来,生成一个字符串,再使用SUBSTRING_INDEX函数取出想要的列的数据。

除了上面介绍的T-SQL方法外,我们还可以使用SSIS实现列数据转换行数据。

1. 首先新建一个SSIS工程,然后拖入Data Flow Task,将数据源和目标连接起来。
2. 然后添加一个Derived Column节点Let, 在Expression中接入以下代码:
```sql
[Name] + ", "+ [Age]

设置Name新列的数据类型为String,运行该步骤后,就实现了列信息拼接:

| Name | Age | Name_New|

|——-|—–|———|

| Mike | 20 | Mike, 20|

| Tony | 25 | Tony, 25|

| Alisa | 30 | Alisa, 30|

3. 然后添加另一个Derived Column节点,在Expression中接入以下代码:

“`sql

(DT_STR,50,1252)SUBSTRING(Name_New,0,FINDSTRING(Name_New, “,”,1) -1)


运行该步骤后,就可以实现从拼接后的字段中依据逗号分隔取出列信息:

| Name | Age | Name_New| Name_New1 |
|-------|-----|---------|------------|
| Mike | 20 | Mike, 20| Mike |
| Tony | 25 | Tony, 25| Tony |
| Alisa | 30 | Alisa, 30| Alisa |

4. 最后利用Conditional Split节点将Name_New1列的值重新拆分,将Name和Age分别输出到不同的目标节点,就实现将列信息行数据的转换。

经过上述步骤,我们就可以实现用MSSQL实现列信息转换成行信息的目的。另外,还可以使用PIVOT、UNPIVOT相关函数和其他一些技巧来实现同样的效果。

总之,MSSQL为我们提供了多种实现列数据转换行数据的方法,如T-SQL、SSIS等,尤其是SSIS,能极大地方便我们数据处理的工作。

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