1
我在管理數據倉庫。我有幾個維度表,其中大部分是類型2和一些是類型1。使用MERGE命令更新類型2尺寸
我能弄清楚如何使用MERGE來維護我的1型維度表。
我很困惑如何做類型2維度表。
我該怎麼做,更新EndDate和使用MERGE命令插入?
我在管理數據倉庫。我有幾個維度表,其中大部分是類型2和一些是類型1。使用MERGE命令更新類型2尺寸
我能弄清楚如何使用MERGE來維護我的1型維度表。
我很困惑如何做類型2維度表。
我該怎麼做,更新EndDate和使用MERGE命令插入?
MERGE
不幸的是,不會讓您將多個操作應用到一個條件,或讓您在一行上多次操作。
所以,我要做的就是使用INSERT INTO
包裹起來MERGE
:
INSERT INTO DimTable
SELECT ID, Name, StartDate, null as EndDate
FROM
(
MERGE DimTable AS tgt
USING StageTable AS src
ON tgt.id = src.id AND tgt.enddate IS NULL
WHEN MATCHED THEN
UPDATE SET tgt.enddate = src.startdate
WHEN NOT MATCHED THEN
INSERT INTO (ID, Name, StartDate)
VALUES (src.id, src.name, src.startdate)
OUTPUT $action as Action, src.ID, src.Name, src.StartDate
) a
WHERE
a.Action = 'UPDATE'
關鍵還有就是OUTPUT
條款,實際上會重定向這些行,所以你知道確切他們發生了什麼。真是太棒了。
@Eric:實際上,它會讓我在NO MATCH上發出多個命令,但不會讓我在MATCH上有多個命令。看看這個BOL示例ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.en/s10de_1devconc/html/952595a6-cf1d-4ff5-8927-66f9090cf79d.htm – 2009-07-23 17:55:47