我有一個需要從不同數據庫中提取的臨時表。原因是每個DB都在一個單獨的員工組中持有信息,我們正試圖創建一個報告,將他們全部歸入一個文件。要做到這一點,當我創建臨時表我說:TSQL如何多次更新臨時表列
Select ...
,...
,CAST(NULL AS int) AS 'FedExemptions'
,...
INTO #TaxInfo
FROM #....
然後我更新FedExemptions柱像這樣:
UPDATE #TaxInfo
set FedExemptions = (SELECT ISNULL(FEDERAL_EXEMPTIONS, 0)
FROM <db1>.EMPS
WHERE CONVERT(int, <db1>.EMPS.EMP) = #TaxInfo.EmpNo)
UPDATE #TaxInfo
set FedExemptions = (SELECT ISNULL(FEDERAL_EXEMPTIONS, 0)
FROM <db2>.EMPS
WHERE CONVERT(int, <db2>.EMPS.EMP) = #TaxInfo.EmpNo)
UPDATE #TaxInfo
set FedExemptions = (SELECT ISNULL(FEDERAL_EXEMPTIONS, 0)
FROM <db3>.EMPS
WHERE CONVERT(int, <db3>.EMPS.EMP) = #TaxInfo.EmpNo)
UPDATE #TaxInfo
set FedExemptions = (SELECT ISNULL(FEDERAL_EXEMPTIONS, 0)
FROM <db4>.EMPS
WHERE CONVERT(int, <db4>.EMPS.EMP) = #TaxInfo.EmpNo)
然而,最後更新(DB4)將覆蓋以往其他3更新,將前三組的Fedexemptions設置爲0
我不明白爲什麼。我可以發誓:
WHERE CONVERT(int, <db4>.EMPS.EMP) = #TaxInfo.EmpNo
會使它,所以當emp數不匹配時SSMS不會觸及行。
作爲一個附註,我正在對Emp編號進行CONVERT處理,因爲#TaxInfo Emp編號是INTs,並且< db>數據庫是varchars。
Ohhhh,讓我看看是否有效:) –
謝謝你。似乎我需要一個橡皮鴨,因爲那個看起來挺直直的,我的大腦只是拒絕想到...... –