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”时,如何获得空白单元格,并避免进行两次计算?
作为建议,不要'single quotes'
用于列别名 - 在某些情况下不支持它,并且使它看起来像一个字符串文字。如果您需要引用列名(在这种情况下不需要),请使用[square brackets]
. 还尝试使用表别名来提高可读性。如果你引用这些表 10 次,我们真的不需要看CLM_BREAKFAST_TYPEA
10 次。
需要明确的是,以上是额外的评论,旨在解释为什么下面的代码示例与您的不完全一样。你表达以下重写并做正是你的问题问什么。
,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)
归档时间: |
|
查看次数: |
1465 次 |
最近记录: |