SSIS转换:46列到4列

时间:2014-07-09 03:58:25

标签: excel ssis

我有一个商业智能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个。 有谁知道如何实现所需的输出?请帮助和谢谢。

1 个答案:

答案 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
.
.
.
.