2012-11-26 122 views
0

寫這個查詢的其他方法是什麼?SQL存儲過程更新語句

Update TempTableDisplay   
SET _cPayment = case When exists(
        select Tofield from #UFTFMappingTempTable where ToField='Payment') 
        then IsNull(S.Payment,0) 
       else dbo.fnGetMaximum((ISNULL(M.NetTaxDue0,0) + ISNULL(M.NetTaxDue1,0) + ISNULL(M.NetTaxDue2,0) + ISNULL(M.NetTaxDue3,0) + ISNULL(M.NetTaxDue4,0) + ISNULL(M.NetTaxDue5,0) + ISNULL(M.NetTaxDue6,0)),0) 
       end 
+0

Microsoft SQL Server 2008 R2 – hks

+0

我不明白你的問題:你爲什麼要以另一種方式寫它? – Pondlife

回答

0

這裏的另一種方式:

if exists(select Tofield from #UFTFMappingTempTable where ToField='Payment') 
begin 
    Update TempTableDisplay   
    SET _cPayment = IsNull(S.Payment,0) 
end 
else 
begin 
    Update TempTableDisplay 
    set _cPayment = dbo.fnGetMaximum((ISNULL(M.NetTaxDue0,0) + ISNULL(M.NetTaxDue1,0) + ISNULL(M.NetTaxDue2,0) + ISNULL(M.NetTaxDue3,0) + ISNULL(M.NetTaxDue4,0) + ISNULL(M.NetTaxDue5,0) + ISNULL(M.NetTaxDue6,0)),0) 
end 

但正如你可能已經注意到了,你已經忽略了很多查詢的 - 例如,哪些表做'S'或'M'是指?沒有這些信息,這一切都不會起作用。