首先設計表格並添加新的字段。
或者運行
ALTER TABLE SalesData
ADD SBCMP smallint NULL
然後你可以爲了得到數據的使用合併。
MERGE SalesData AS target
USING (SELECT * FROM SalesDataNew) AS source
ON (target.IDField = source.IDField)
WHEN MATCHED THEN
UPDATE SET SBLOC = source.SBLOC,
SBCUST = source.SBCUST ,
RMNAME = source.RMNAME,
IFPRVN = source.IFPRVN ,
SBITEM = source.SBITEM ,
SBITD1 = source.SBITD1 ,
SBDIV = source.SBDIV ,
SBCLS = source.SBCLS ,
SBQSHP = source.SBQSHP ,
AVC = source.AVC,
SBEPRC = source.SBEPRC,
SBINV = source.SBINV ,
SBORD = source.SBORD,
SBTYPE = source.SBTYPE,
SBINDT = source.SBINDT,
RMSTAT = source.RMSTAT ,
SBCMP = source.SBCMP
WHEN NOT MATCHED THEN
INSERT (SBLOC,
SBCUST ,
RMNAME,
IFPRVN ,
SBITEM ,
SBITD1 ,
SBDIV ,
SBCLS ,
SBQSHP ,
AVC ,
SBEPRC ,
SBINV ,
SBORD,
SBTYPE,
SBINDT,
RMSTAT,
SBCMP)
VALUES (source.SBLOC,
source.SBCUST ,
source.RMNAME,
source.IFPRVN ,
source.SBITEM ,
source.SBITD1 ,
source.SBDIV ,
source.SBCLS ,
source.SBQSHP ,
source.AVC ,
source.SBEPRC ,
source.SBINV ,
source.SBORD,
source.SBTYPE,
source.SBINDT,
source.RMSTAT
source.SBCMP)
請記住,我在MERGE的ON子句中使用了一個名爲IDField的假想字段。這是虛構的,因爲不清楚哪張是桌子的ID。如果有兩列形成id,則應像在JOIN語句中那樣添加它們。
還有一件事是我已將新表命名爲SalesDataNew,因爲我不知道它的實際名稱。
MERGE是FULL OUTER JOINning這兩個表(稱爲目標和源)。然後,對於匹配的行,它正在執行UPDATE,對於不在源上的行進行匹配,而對目標不執行INSERT。在目標上執行UPDATE和INSERT。
當目標上有行但目標上沒有時(在這裏你通常會刪除),在目標上執行某些操作可能是可能的,但是這不在我認爲的範圍之內。 。
如果你只是想更新和不插入,然後上面是確定你(雖然你應該刪除WHEN NOT MATCHED THEN部分你也可以做直UPDATE
一個例子是:
UPDATE SalesData
SET SBLOC = source.SBLOC,
SBCUST = source.SBCUST ,
RMNAME = source.RMNAME,
IFPRVN = source.IFPRVN ,
SBITEM = source.SBITEM ,
SBITD1 = source.SBITD1 ,
SBDIV = source.SBDIV ,
SBCLS = source.SBCLS ,
SBQSHP = source.SBQSHP ,
AVC = source.AVC,
SBEPRC = source.SBEPRC,
SBINV = source.SBINV ,
SBORD = source.SBORD,
SBTYPE = source.SBTYPE,
SBINDT = source.SBINDT,
RMSTAT = source.RMSTAT ,
SBCMP = source.SBCMP
FROM SalesData target
JOIN SalesDataNew source
ON target.IDField = source.IDField
新的表被以同樣的方式設計爲舊錶,唯一的例外是除了[SBCMP]的。 – tsqln00b
我只是想更新SBCMP何時匹配。這樣行不行,只是這樣做呢? – tsqln00b
@ tsqln00b你可以查看我的更新的解決方案,我已經提供了MERGE和UPDATE解決方案,在這種情況下,MERGE不會太大租用的時間比UPDATE更長,並且在你想要更新,插入或刪除的情況下,它會更好,因爲它只掃描一次表。 –