将多列转换为一列

时间:2017-12-20 09:32:45

标签: 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-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

我试图从下面的链接中采用枢轴功能,但无法获取与日期列链接的警报数据:

sql server single row multiple columns into one column

感谢您的帮助, 小号

2 个答案:

答案 0 :(得分:2)

请查看此查询:

SELECT
  Area,
  Date,
  Alarm
FROM yourtable
UNPIVOT
(
Alarm
FOR [Date] IN ([01-Apr-17], [02-Apr-17], [03-Apr-17])
) AS P

enter image description here

答案 1 :(得分:1)

使用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;