当我们从数据库中提取数据时,有时数据都显示为一列一列的。但是,我们可能需要将一些列转化为行,这就需要用到Pivot函数。本文主要介绍SQL Server数据库中的Pivot函数的基础用法。
Pivot函数是SQL Server提供的用于转化数据表结构的函数。它可以将一列或多列数据整理成一个新的行列结构的表。 Pivot函数在交叉列和汇总数据时特别有用。
Pivot函数具体的语法如下:
SELECT column_list
FROM table_name
PIVOT (aggregate_function(column_to_aggregate)
FOR pivot_column
IN (pivot_column_values))
AS pivot_table
假设我们有一个销售表格,它把销售数据以以下形式列出,每一行都代表一笔交易,包括日期、销售员、产品和销售数量。
销售日期 | 销售员 | 产品 | 销售数量 |
---|---|---|---|
2020-05-01 | Tom | A | 10 |
2020-05-01 | Tom | B | 20 |
2020-05-01 | Bob | A | 30 |
2020-05-02 | Bob | B | 50 |
2020-05-02 | Alice | A | 40 |
2020-05-02 | Charlie | B | 70 |
现在,我们想把它转化成一个新的表,其中每一行代表一个销售员和他们对应的产品销售数据。
销售员 | A | B |
---|---|---|
Tom | 10 | 20 |
Bob | 30 | 50 |
Alice | 40 | NULL |
Charlie | NULL | 70 |
使用Pivot函数的SQL语句如下:
SELECT [Sales Person], [A], [B]
FROM
(SELECT [Sales Person], Product, [Sales Quantity]
FROM SalesTable) AS ST
PIVOT
(
SUM([Sales Quantity])
FOR Product IN ([A], [B])
) AS PT;
假设我们有另一个用户活动表,其中包含每个用户在每天开始前的活动数量。
用户 | 日期 | 活动 |
---|---|---|
Alice | 2020-05-01 | 10 |
Alice | 2020-05-02 | 20 |
Bob | 2020-05-01 | 15 |
Bob | 2020-05-02 | 30 |
现在,我们想把这个表格转换成下面这个格式,其中每一行都代表一个日期,列代表每个用户的活动数量:
日期 | Alice | Bob |
---|---|---|
2020-05-01 | 10 | 15 |
2020-05-02 | 20 | 30 |
对于这个需要使用Pivot函数的SQL如下:
SELECT [Activity Date], [Alice], [Bob]
FROM
(SELECT [User], Activity, [Activity Date]
FROM ActivityTable) AS AT
PIVOT
(
SUM([Activity])
FOR [User] IN ([Alice], [Bob])
) AS PT;
Pivot函数是一种非常方便的SQL函数,使用它可以使数据的处理变得更加简便。通过本文的介绍,相信大家会更加深入地理解这个函数在数据处理中的应用。
本文链接:http://task.lmcjl.com/news/17182.html