sql server 多行数据转多行多列
时间: 2023-10-28 14:06:07 浏览: 123
sql多行转列
假设有如下表结构和数据:
```
CREATE TABLE #temp (
id INT,
name VARCHAR(50),
value INT
)
INSERT INTO #temp VALUES (1, 'A', 10)
INSERT INTO #temp VALUES (1, 'B', 20)
INSERT INTO #temp VALUES (1, 'C', 30)
INSERT INTO #temp VALUES (2, 'A', 40)
INSERT INTO #temp VALUES (2, 'B', 50)
INSERT INTO #temp VALUES (2, 'C', 60)
```
希望将数据转化为以下形式:
```
id A B C
1 10 20 30
2 40 50 60
```
可以使用 PIVOT 操作来实现:
```
SELECT id, [A], [B], [C]
FROM (
SELECT id, name, value FROM #temp
) AS t
PIVOT (
SUM(value) FOR name IN ([A], [B], [C])
) AS p
```
其中,PIVOT 操作中的 SUM(value) 是对数据进行聚合操作,可以根据实际情况进行修改。
阅读全文