【问题标题】:SQL Stored Procedure Update statementSQL 存储过程更新语句
【发布时间】:2012-11-26 06:32:19
【问题描述】:

还有什么其他的方式来写这个查询??

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

【问题讨论】:

  • Microsoft SQL Server 2008 R2
  • 我不明白你的问题:你为什么要换一种方式写?

标签: sql-server stored-procedures sql-server-2008-r2


【解决方案1】:

这是另一种方式:

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”指的是哪些表?没有这些信息,这一切都不会奏效。

【讨论】:

    猜你喜欢
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    相关资源
    最近更新 更多