我有一个商业智能SSIS项目,我准备我的事实表,这里的问题是,我的源是一个包含46列的excel文件,我的事实表只需要4,但我需要来自46列的信息。
我将尝试简化一个小例子:
来源:
code_agency | date | OC_realisation | CV_realistion | NTC_realisation
700 | 1/1/2014 | 4 | 6 | 3
200 | 1/1/2014 | 5 | 1 | 0
目标
code_agency | date | Code_realisation | value
700 | 1/1/2014 | OC | 4
700 | 1/1/2014 | CC | 6
700 | 1/1/2014 | NTC | 3
200 | 1/1/2014 | OC | 5
200 | 1/1/2014 | CC | 1
200 | 1/1/2014 | NTC | 0
这是一个只有3个实现列的示例,但我的excel源代码确实有46个。 有谁知道如何实现所需的输出?请帮助和谢谢。
答案 0 :(得分:0)
选项1.使用 Unpivot 转换。
<强> Unpivot Transformation Example 强>
选项2:在TSQL中处理它
SELECT Code_Agency, date, 'OC' AS Code_realisation, OC_realisation AS value
UNION ALL
SELECT Code_Agency, date, 'CC' AS Code_realisation, CC_realisation AS value
UNION ALL
SELECT Code_Agency, date, 'NTC' AS Code_realisation, NTC_realisation AS value
.
.
.
.