我正在尝试编写一个过程,我可以动态地合并多个staging + destination表,每个表都有不同的列名和主键。
有没有办法通过提取主键约束进行合并?
我设想做一个看起来像这样的动态SQL语句:
'MERGE
' + @DestinationTable + ' Dest
USING
' + @StagingTable ' Staging
ON
' + @JoinConditions + '
WHEN NOT MATCHED THEN
INSERT INTO
Dest
SELECT
*
FROM
Staging
WHEN MATCHED THEN
UPDATE
Dest
SET
' + @UpdateStatement
@DestinationTable
是一个带有表名的字符串参数,@StagingTable
是相同的,@JoinConditions
是一个格式为
Staging.ColumnName = Dest.ColumnName
每个键列的,@UpdateStatement
格式相同,但非键列除外。
它看起来不漂亮,但这是我预见它的工作方式。
答案 0 :(得分:1)
生成MERGE语句是BI / DW空间的主要内容,因为它是一种常见的要求。
有些解决方案可以生成存储过程和/或合并语句some will also write the SSIS packages。那里
就此而言,我不打算在这里写一个解决方案。
我最后一次需要它时下载了
通过搜索"生成合并脚本sql server"
,您可以了解此要求的常见程度。例如