【问题标题】:UNPIVOT in sql server with two input values (converting from Oracle to sql server)具有两个输入值的 sql server 中的 UNPIVOT(从 Oracle 转换为 sql server)
【发布时间】:2022-11-01 21:17:43
【问题描述】:
在 Oracle 中,我写了一个使用 UNPIVOT 的语句。那部分看起来像这样:
'''
unpivot ((value, prev_value) for col in (
(title, prev_title) as 'title' , (stage, prev_stage) as 'stage' , (value, prev_value) as 'value'
'''
到目前为止,我无法找到一种对 sql server 执行相同操作的方法。任何建议l
【问题讨论】:
标签:
sql
sql-server
unpivot
【解决方案1】:
使用UNION ALL:
SELECT other_column1,
other_column2,
'title' AS col,
title AS value,
prev_title AS prev_value
FROM table_name
WHERE title IS NOT NULL
AND prev_title IS NOT NULL
UNION ALL
SELECT other_column1,
other_column2,
'stage' AS col,
stage AS value,
prev_stage AS prev_value
FROM table_name
WHERE stage IS NOT NULL
AND prev_stage IS NOT NULL
UNION ALL
SELECT other_column1,
other_column2,
'value' AS col,
value,
prev_value
FROM table_name
WHERE value IS NOT NULL
AND prev_value IS NOT NULL
fiddle