动态Pivot结果到固定表(SSIS或SQL)

时间:2010-12-06 09:25:40

标签: sql sql-server ssis

我有一个存储过程,它通过动态数据透视表为我提供数据,我想将这些数据插入到一个表中,该表包含所有可能的列,动态数据透镜可以生成。

示例:

动态数据透视存储过程提供了下表:

Property_A  Property_C
----------------------
Value_A     Value_A
Value_B     Value_C
...

在另一次运行中,相同的SP可能会产生

Property_A  Property_B
----------------------
Value_D     Value_A
...

无论它返回什么,结果都应该放在像这样的表中

Property_A  Property_B  Property_C
----------------------------------
Value_A     NULL        Value_A
Value_B     NULL        Value_C
Value_D     Value_A     NULL

等等。

如何通过SQL(MS SQL Server)或更好的SSIS实现这一目标?

提前致谢,

tombom

2 个答案:

答案 0 :(得分:1)

如果调用进程不知道结果中的列是什么,这有点棘手。要插入表(永久或临时),插入的列数必须与要插入的列数相匹配。

以下是将SP的结果插入表格的方法。请注意,您不必在表中包含所有列。但是,在我的示例中,usp_MakeDate_1返回三列中的两列(Property_A,Property_C),usp_MakeData_2返回一组两个不同的列(Property_A,Property_B)。

INSERT INTO MyResults (Property_A, Property_C)
EXEC dbo.usp_MakeData_1

INSERT INTO MyResults (Property_A, Property_B)
EXEC dbo.usp_MakeData_2

在动态SQL方面,您会发现SSIS的限制性更强。在大多数情况下,您的输出和输入必须在设计时知道。

答案 1 :(得分:0)

SELECT
  *
INTO
  MyNewTable
FROM
  TempTableProducedByStoredProc