【问题标题】:update if multiple IF statements are true如果多个 IF 语句为真,则更新
【发布时间】:2014-01-29 13:06:54
【问题描述】:

这就是我想要的形象。

SELECT dbo.AUDIT WHERE AUD_CloseDate IS NULL
IF AUD_CloseDate IS NULL
check if score is 100%
then update closed date

我需要选择AUD_CloseDate,它是NULL,如果它是NULL,然后检查total = 100% 如果是真的,那么用今天的日期更新AUD_CloseDate 列。

Total = (Scored / Total - NA) * 100

不确定如何编码。?

【问题讨论】:

  • 这样的逻辑通常属于应用程序,读取数据,进行检查并执行更新......这是一个纯数据库系统吗?
  • 查看SQL中的case语句

标签: sql sql-server


【解决方案1】:
UPDATE dbo.AUDIT
SET AUD_CloseDate = GETDATE()
WHERE (AUD_CloseDate IS NULL) AND (Scored / Total - NA) *100 >= 100

【讨论】:

    【解决方案2】:

    这应该可以按预期工作:

    UPDATE dbo.AUDIT
    SET AUD_CloseDate = GETDATE()
    WHERE AUD_CloseDate IS NULL AND (Scored / Total - NA) *100 >= 100
    

    【讨论】:

      【解决方案3】:

      您需要update 语句,而不是select。简化以消除冗余:

      update dbo.AUDIT set
      AUD_CloseDate = getdate()
      where AUD_CloseDate is null
      and Scored / Total - NA = 1
      

      【讨论】:

        【解决方案4】:

        只需使用一段直接的 SQL。我使用了一个参数,但您可以硬编码关闭日期的值,或使用当前日期函数之一。

        UPDATE dbo.Audit SET AUD_CloseDate = @CloseDateValue 
        WHERE AUD_CloseData IS NULL AND total = 100
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-05-04
          • 1970-01-01
          • 1970-01-01
          • 2020-03-16
          • 1970-01-01
          • 2013-05-15
          • 1970-01-01
          • 2021-05-16
          相关资源
          最近更新 更多