【问题标题】:How to SUM two fields within an SQL query如何对 SQL 查询中的两个字段求和
【发布时间】:2013-01-30 10:19:33
【问题描述】:

我需要获取同一行中两个字段的总数,然后在同一行末尾的字段中输入该数字。

这是我的代码。

Sum(tbl1.fld1 + tbl1.fld2) AS [Total]

这是 SUM 函数的用途,还是只能使用 SUM 函数来获取列的总数?

谢谢

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    只是一个关于添加列的提醒。如果其中一个值为 NULL,则这些列的总数变为 NULL。因此,为什么有些发帖人建议用第二个参数为 0 来合并

    我知道这是一篇较旧的帖子,但为了完整起见,我想添加它。

    【讨论】:

    • 感谢 Barb,在 coalesce 旁边也可以使用 ISNULL。例如,ISNULL((value_1),0) + ISNULL((value_2),0)
    【解决方案2】:

    SUM 是一个聚合函数。它将计算每个组的总数。 + 用于连续计算两列或多列。

    考虑这个例子,

    ID  VALUE1  VALUE2
    ===================
    1   1       2
    1   2       2
    2   3       4
    2   4       5
    

     

    SELECT  ID, SUM(VALUE1), SUM(VALUE2)
    FROM    tableName
    GROUP   BY ID
    

    结果

    ID, SUM(VALUE1), SUM(VALUE2)
    1   3           4
    2   7           9
    

     

    SELECT  ID, VALUE1 + VALUE2
    FROM    TableName
    

    结果

    ID, VALUE1 + VALUE2
    1   3
    1   4
    2   7
    2   9
    

     

    SELECT  ID, SUM(VALUE1 + VALUE2)
    FROM    tableName
    GROUP   BY ID
    

    结果

    ID, SUM(VALUE1 + VALUE2)
    1   7
    2   16
    

    【讨论】:

    • 这个答案并不复杂,而是简单,并根据需要详细说明。不错!
    • 感谢 John,这可能是回答这个问题的最佳方式!
    【解决方案3】:

    由于我的声望点低于 50,我无法评论或投票支持 E Coder 的上述回答。这是最好的方法,因此您不必使用 group by,因为我遇到了类似的问题。
    通过将SUM((coalesce(VALUE1 ,0)) + (coalesce(VALUE2 ,0))) 设置为 Total,这将为您提供所需的数字,但也可以消除因未执行 Group By 的任何错误。 这是我的查询,给了我每个经销商的总数和总金额,然后给了我质量和风险经销商贷款的小计。

    SELECT 
        DISTINCT STEP1.DEALER_NBR
        ,COUNT(*) AS DLR_TOT_CNT
        ,SUM((COALESCE(DLR_QLTY,0))+(COALESCE(DLR_RISKY,0))) AS DLR_TOT_AMT
        ,COUNT(STEP1.DLR_QLTY) AS DLR_QLTY_CNT
        ,SUM(STEP1.DLR_QLTY) AS DLR_QLTY_AMT
        ,COUNT(STEP1.DLR_RISKY) AS DLR_RISKY_CNT
        ,SUM(STEP1.DLR_RISKY) AS DLR_RISKY_AMT
        FROM STEP1
        WHERE DLR_QLTY IS NOT NULL OR DLR_RISKY IS NOT NULL
            GROUP BY STEP1.DEALER_NBR
    

    【讨论】:

      【解决方案4】:
      ID  VALUE1  VALUE2
      ===================
      1   1       2
      
      1   2       2
      2   3       4
      2   4       5
      
      select ID, (coalesce(VALUE1 ,0) + coalesce(VALUE2 ,0) as Total from TableName
      

      【讨论】:

        【解决方案5】:

        如果您想将两列添加在一起,您所要做的就是添加它们。然后,您将获得查询返回的每一行的这两列的总和。

        您的代码正在做的是将两列相加,然后得到总和的总和。这会起作用,但它可能不是你想要完成的。

        【讨论】:

          【解决方案6】:

          sum 函数只获取一列的总数。为了对来自不同列的两个值求和,请将值转换为 int 并使用 +-Operator 将它们相加

          Select (convert(int, col1)+convert(int, col2)) as summed from tbl1
          

          希望对您有所帮助。

          【讨论】:

            【解决方案7】:

            尝试以下方法:

            SELECT *, (FieldA + FieldB) AS Sum
            FROM Table
            

            【讨论】:

            • 转换为 int 也很重要,如果字段是包含 int 的 varchars
            • @Obl Tobl 我想要动态列的总和
            • 你先生,救了我的命。
            【解决方案8】:

            SUM 用于对多行的列中的值求和。您可以将列添加在一起:

            select tblExportVertexCompliance.TotalDaysOnIncivek + tblExportVertexCompliance.IncivekDaysOtherSource AS [Total Days on Incivek]
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多