2012-11-26 75 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'是指?没有这些信息,这一切都不会起作用。