unpivot函数用法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

unpivot函数用法

概述

UNPIVOT函数是一种用于将列转换为行的SQL Server函数。该函数允许用户将多个列转换为单个列,并将其值作为新行返回。它可以用于数据报表、数据分析和数据清理等多种场景。

语法

UNPIVOT函数的语法如下:

```

SELECT unpivoted_column, unpivoted_value

FROM (SELECT column1, column2, column3, ... FROM

table_name) AS unpivoted_data

UNPIVOT(unpivoted_value FOR unpivoted_column IN (column1, column2, column3, ...)) AS unpivoted_table;

```

参数说明:

- `unpivoted_column`:新表中的列名。

- `unpivoted_value`:新表中的值。

- `table_name`:要操作的表名。

- `column1, column2, column3...`:要转换的列名。

示例

以下是一个简单的示例,展示了如何使用UNPIVOT函数将多个列转换为单个列:

```

CREATE TABLE sales (

year INT,

quarter1 INT,

quarter2 INT,

quarter3 INT,

quarter4 INT

);

INSERT INTO sales VALUES

(2016, 1000, 2000, 3000, 4000),

(2017, 1500, 2500, 3500, 4500),

(2018, 1200, 2200, 3200, 4200);

SELECT unpivoted_column AS QuarterYear,

unpivoted_value AS SalesAmount

FROM (SELECT year,

quarter1,

quarter2,

quarter3,

quarter4

FROM sales) AS unpivoted_data

UNPIVOT(unpivoted_value FOR unpivoted_column IN (quarter1, quarter2, quarter3, quarter4)) AS unpivoted_table;

```

输出结果如下:

```

QuarterYear SalesAmount

--------------------------

quarter1 1000

quarter2 2000

quarter3 3000

quarter4 4000

quarter1 1500

quarter2 2500

quarter3 3500

quarter4 4500

quarter1 1200

quarter2 2200

quarter3 3200

quarter4 4200

```

可以看到,原始表中的四个季度列被转换为了新表中的QuarterYear 列,并将其值作为新行返回。

注意事项

- UNPIVOT函数只能用于SELECT语句中。

- 转换后的列名必须是唯一的。

- 要转换的列必须具有相同的数据类型。

- 如果要转换的列包含NULL值,则它们将不会出现在新表中。

总结

UNPIVOT函数是一种非常有用的SQL Server函数,它可以将多个列转换为单个列,并将其值作为新行返回。它可以用于数据报表、数据

分析和数据清理等多种场景。使用时需要注意参数设置和注意事项,以免出现错误。

相关文档
最新文档