【问题标题】:Adding together two column sums in SQL Server2005在 SQL Server 2005 中将两列总和相加
【发布时间】:2011-12-03 21:14:17
【问题描述】:

我在尝试将两列总和相加时遇到了一个问题。 我已经创建了一个包含所有正确数据的视图,但是当我尝试执行如下查询时:

    Select ID, Sum(ColumnA),
    Sum(ColumnB)
    Sum(ColumnA) + Sum(ColumnB) AS ColumnC
    From View1
   Group by ID

只有在两列中都有数据时,ColumnC 的数字才正确,如果 ColumnB 中只有数据,那么它会显示,但如果 ColumnA 中只有数据,那么它不会显示。

有时当 ColumnA 或 B 中没有任何数据时,它会为 NULL,所以也许这就是问题所在。 希望有办法解决这个问题。

干杯

【问题讨论】:

  • 抱歉回复晚了。但是感谢他们的答案很棒并且一切正常,我最后选择了 IS NULL 子句。再次感谢

标签: sql sql-server-2005 select view sum


【解决方案1】:

尝试使用ISNULL 将零替换为 NULL:

Select ID, Sum(ColumnA),
Sum(ColumnB)
ISNULL(Sum(ColumnA),0) + ISNULL(Sum(ColumnB),0) AS ColumnC
From View1
Group by ID

【讨论】:

    【解决方案2】:

    向空值添加一些内容会产生空结果,空值不会转换为零。您必须明确地进行转换:

    Select ID, Sum(ColumnA),
    Sum(ColumnB)
    isnull(Sum(ColumnA), 0) + isnull(Sum(ColumnB), 0) AS ColumnC
    From View1
    Group by ID
    

    【讨论】:

      【解决方案3】:

      您可以使用COALESCE 将计算中的NULL 输入替换为零,如下所示。

      COALESCE(Sum(ColumnA),0) + COALESCE(Sum(ColumnB),0) +  AS ColumnC
      

      ISNULL 与其他 2 个答案一样。 Doesn't matter which 如果不关心可移植性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-04
        • 2013-03-23
        相关资源
        最近更新 更多