sql把一列数据转为多列
时间: 2024-04-17 13:06:37 浏览: 47
sql多行转列
可以使用 `PIVOT` 函数将一列数据转换为多列。`PIVOT` 函数的语法如下:
```
SELECT <GroupBy_Columns>,
[First_Column] AS <Pivot_Column1>,
[Second_Column] AS <Pivot_Column2>,
...
FROM <Table>
PIVOT (
<Aggregation_Function>(<Value_Column>)
FOR <Pivot_Column> IN ([First_Column], [Second_Column], ...)
) AS <Alias_Table>
```
其中,`<GroupBy_Columns>` 指的是需要分组的列,可以有多个;`<First_Column>`、`<Second_Column>` 等是需要转换的列;`<Aggregation_Function>` 指的是对于每个 `<Pivot_Column>` 所对应的值应该如何聚合,例如可以使用 `SUM`、`AVG`、`MAX`、`MIN` 等函数;`<Value_Column>` 指的是需要进行聚合的列;`<Pivot_Column>` 指的是需要转换的列名。
举个例子,假设有如下表格 `Sales`:
| Product | Month | Revenue |
|---------|-------|---------|
| A | Jan | 100 |
| A | Feb | 200 |
| A | Mar | 300 |
| B | Jan | 50 |
| B | Feb | 75 |
| B | Mar | 100 |
我们可以使用 `PIVOT` 函数将 `Month` 列转换为多列:
```
SELECT Product, Jan, Feb, Mar
FROM Sales
PIVOT (
SUM(Revenue)
FOR Month IN (Jan, Feb, Mar)
) AS P
```
转换后的结果如下:
| Product | Jan | Feb | Mar |
|---------|-----|-----|-----|
| A | 100 | 200 | 300 |
| B | 50 | 75 | 100 |
阅读全文