我的源报告看起来像
Name Q1 Q2 Q3 Q4
A 1 2 3 4
B 5 6 7 8
C 9 0 1 2
必须将其转换为以下格式
Name Quarter Value
A Q1 1
A Q2 2
A Q3 3
A Q4 4
and so on...
我正在使用SSIS进行ETL。没有在T-SQL脚本中使用硬编码值的任何指针?
答案 0 :(得分:1)
这对于UNPIVOT来说是一个很好的匹配,但是除非你愿意把它变成一个动态的sql语句,否则我没有看到在语句中对Quarters进行硬编码的方法。
SELECT Name
, Quarter
, Value
FROM q
UNPIVOT (
Value FOR Quarter IN (Q1, Q2, Q3, Q4)
) u
;WITH q (Name, Q1, Q2, Q3, Q4) AS (
SELECT 'A', 1, 2, 3, 4
UNION ALL SELECT 'B', 5, 6, 7, 8
UNION ALL SELECT 'C', 9, 0, 1, 2
)
SELECT Name
, Quarter
, Value
FROM q
UNPIVOT (
Value FOR Quarter IN (Q1, Q2, Q3, Q4)
) u