Sql 将多列转换为一列
我有一个具有以下结构和数据的表:Sql 将多列转换为一列,sql,sql-server,Sql,Sql Server,我有一个具有以下结构和数据的表: **Area | 01-Apr-17 | 02-Apr-17 | 03-Apr-17** Field_A | 76 | 174 | 123 Field_B | 67 | 414 | 35 我需要这样的桌子: Area | Date | Alarm Field_A | 01-Apr-17 | 76 Field_A | 02-A
**Area | 01-Apr-17 | 02-Apr-17 | 03-Apr-17**
Field_A | 76 | 174 | 123
Field_B | 67 | 414 | 35
我需要这样的桌子:
Area | Date | Alarm
Field_A | 01-Apr-17 | 76
Field_A | 02-Apr-17 | 174
Field_A | 03-Apr-17 | 123
Field_B | 01-Apr-17 | 67
Field_B | 02-Apr-17 | 414
Field_B | 03-Apr-17 | 358
我试图从下面的链接中采用pivot函数,但无法获取链接到日期列的报警数据:
谢谢你的帮助,
S使用SQL Server的
PIVOT
是一种选择,但我们也可以使用一系列联合来处理此问题:
SELECT Area, '01-Apr-17' AS Date, [01-Apr-17] AS Alarm
FROM yourTable
UNION ALL
SELECT Area, '02-Apr-17', [02-Apr-17]
FROM yourTable
UNION ALL
SELECT Area, '03-Apr-17', [03-Apr-17]
FROM yourTable
ORDER BY Area, Date;
请检查此查询:
SELECT
Area,
Date,
Alarm
FROM yourtable
UNPIVOT
(
Alarm
FOR [Date] IN ([01-Apr-17], [02-Apr-17], [03-Apr-17])
) AS P
谢谢Tim,用pivot可以吗?谢天谢地,它不会工作,因为我需要从原始数据生成区域、日期和报警列。