总计列 - 如果为零或 NULL 则为空白

iok*_*ins -1 null sql-server t-sql

报告当前计算“总计”列,如下所示:

,CASE WHEN ISNULL(CLM_BREAKFAST_TYPEA.MealsA, 0) +
           ISNULL(CLM_BREAKFAST_TYPEB.MealsB, 0) = 0                 
      THEN ''
      ELSE CONVERT(VARCHAR(15), 
           ISNULL(CLM_BREAKFAST_TYPEA.MealsA, 0) +
           ISNULL(CLM_BREAKFAST_TYPEB.MealsB, 0)) 
      END AS 'MealsTotal'
Run Code Online (Sandbox Code Playgroud)

当总数等于零而不是 NULL 或“0”时,如何获得空白单元格,并避免进行两次计算?

Aar*_*and 9

作为建议,不要'single quotes'用于列别名 - 在某些情况下不支持它,并且使它看起来像一个字符串文字。如果您需要引用列名(在这种情况下不需要),请使用[square brackets]. 还尝试使用别名来提高可读性。如果你引用这些表 10 次,我们真的不需要看CLM_BREAKFAST_TYPEA10 次。

需要明确的是,以上是额外的评论,旨在解释为什么下面的代码示例与您的不完全一样。你表达以下重写正是你的问题问什么。

,MealsTotal = COALESCE(NULLIF(CONVERT(VARCHAR(15),
       COALESCE(A.MealsA, 0) +
       COALESCE(B.MealsB, 0)),0),'')
FROM
... dbo.CLM_BREAKFAST_TYPEA AS A
... some kind of join
... dbo.CLM_BREAKFAST_TYPEB AS B
Run Code Online (Sandbox Code Playgroud)

SQLfiddle 演示