【问题标题】:SQL Server computed columns (0 if value is negative)SQL Server 计算列(如果值为负数,则为 0)
【发布时间】:2018-03-07 04:53:40
【问题描述】:

我有一个计算出的 SQL Server 列,其计算方式如下:

Number1 - Number2

如果碰巧这个数学等于一个负数,我希望有一个 0 作为字段中的值,而不是一个负数

IE:5-10 = -5(显示 0)或只有正数。

SELECT 
    CASE 
       WHEN [Scheduled] - [Purchased] < 0 
          THEN 0 
          ELSE [Scheduled] - [Purchased] 
    END

SELECT 
    IIF([Scheduled] - [Purchased] < 0, 0, [Scheduled] - [Purchased])

【问题讨论】:

    标签: database sql-server-2016 calculated-columns


    【解决方案1】:

    为此使用CASE

    SELECT CASE WHEN Scheduled - Purchased < 0 THEN 0 ELSE Scheduled - Purchased END
    

    如果用作计算列,只需编写:

    CASE WHEN Scheduled - Purchased < 0 THEN 0 ELSE Scheduled - Purchased END
    

    SQL Server 2012 起,也可以使用IIF 函数:

    SELECT IIF(Scheduled - Purchased < 0, 0, Scheduled - Purchased)
    

    【讨论】:

      【解决方案2】:

      您必须在此处使用带有 if else 语句的 sql 查询 尝试以下语句,ents 或参考 this article

      IF value < 0 PRINT '0'  
      ELSE PRINT 'value' ;  
      

      【讨论】:

      • 我在使用PRINT 时收到错误消息,计算字段是否允许 TSQL?
      • 是的。它必须工作!您是否在 SQL Server 中使用 Microsoft 来运行 TSQL?
      • 是的,使用最新版本的 SSMS SQL 2016,我正在尝试将其插入“计算列规范,公式”框中。我的领域的配置。
      • 我添加了一个屏幕截图,希望对您有所帮助。
      猜你喜欢
      • 2015-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-02
      • 2022-11-03
      • 1970-01-01
      相关资源
      最近更新 更多