【问题标题】:How to SUM multiple columns from the same row [closed]如何对同一行中的多列求和[关闭]
【发布时间】:2015-07-15 03:58:39
【问题描述】:

我有以下查询。如何获得“第 1 列”和“第 2 列”的总和? X 和 Y 只是为了让问题更容易理解的示例数据。

SELECT 
'Column 1' = 
    case
        when x = 0 then 2
        when x = 1 then 4
        else 6
    end
,'Column 2' = 
    case
        when y = 0 then 3
        when y = 1 then 6
        else 9
    end
FROM table1

【问题讨论】:

  • 您的问题不清楚。你能提供更多的样本数据和预期的结果吗? =
  • @wewestthemenace 这怎么不清楚?我刚刚说“如何获得 column1 和 column2 的总和”。请删除您的反对票
  • 你确定是我否决了你的问题吗?没有明确的样本数据和预期的结果,我们只能猜测您的要求是什么。您已经得到了 4 个答案,如果没有一个是正确的,那么可能是因为他们没有很好地理解您的问题。请阅读How to ask a question?

标签: sql sql-server stored-procedures


【解决方案1】:

我认为你可以使用派生表做一些这样的思考

select sum(p.Column 1) as COL1,sum(p.Column 1) as COL2 from 
(
SELECT 
'Column 1' = 
    case
        when x = 0 then 2
        when x = 1 then 4
        else 6
    end
,'Column 2' = 
    case
        when y = 0 then 3
        when y = 1 then 6
        else 9
    end
FROM table1) as p

或使用 CTE

;with cte
as
(
SELECT 
    'Column 1' = 
        case
            when x = 0 then 2
            when x = 1 then 4
            else 6
        end
    ,'Column 2' = 
        case
            when y = 0 then 3
            when y = 1 then 6
            else 9
        end
    FROM table1)
select sum(column1) as COL1,sum(column2) as COL2 from cte

【讨论】:

    【解决方案2】:

    试试这个查询

    SELECT 
    sum(
        case
            when x = 0 then 2
            when x = 1 then 4
            else 6
        end) 'Column 1'
    ,sum( 
        case
            when y = 0 then 3
            when y = 1 then 6
            else 9
        end) 'Column 2'
    FROM table1
    

    【讨论】:

    • 只看查询,好像没有添加'Column 1'和'Column 2'
    【解决方案3】:

    如果你想要 table1 中每一行的 Column 1 + Column 2 的结果,你可以使用这个查询:

    SELECT [Column 1] + [Column 2]
    FROM (
        SELECT  
            CASE
                WHEN x = 0 then 2
                WHEN x = 1 then 4
                ELSE 6
            END AS [Column 1]
            , CASE
                WHEN y = 0 THEN 3
                WHEN y = 1 THEN 6
                ELSE 9
            END AS [Column 2]
        FROM table1
    ) AS IntermediateResult
    

    如果您想要第 1 列中的所有值和第 2 列中的所有值的总和,您可以对第 1 列和第 2 列求和。

    SELECT SUM([Column 1] + [Column 2])
    FROM (
        SELECT  
            CASE
                WHEN x = 0 then 2
                WHEN x = 1 then 4
                ELSE 6
            END AS [Column 1]
            , CASE
                WHEN y = 0 THEN 3
                WHEN y = 1 THEN 6
                ELSE 9
            END AS [Column 2]
        FROM table1
    ) AS IntermediateResult
    

    【讨论】:

      【解决方案4】:

      试试:

      SELECT 
          SUM
          (
              CASE x
                  WHEN 0 THEN 2
                  WHEN 1 THEN 4
                  ELSE 6
              END
          ) AS [Column 1],
      
          SUM
          (
              CASE y
                  WHEN 0 THEN 3
                  WHEN 1 THEN 6
                  ELSE 9
              END
          ) AS [Column 2]
      FROM
          table1
      

      SUM两列

      SELECT 
          (
              CASE x
                  WHEN 0 THEN 2
                  WHEN 1 THEN 4
                  ELSE 6
              END
          )
          +
          (
              CASE y
                  WHEN 0 THEN 3
                  WHEN 1 THEN 6
                  ELSE 9
              END
          ) AS [Column 1]
      FROM
          table1
      

      【讨论】:

        猜你喜欢
        • 2017-01-21
        • 2018-07-22
        • 2021-08-15
        • 2020-04-16
        • 2020-07-24
        • 2021-06-03
        • 2019-03-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多