代码之家  ›  专栏  ›  技术社区  ›  codeNinja

选择对行求和并将其作为列返回的查询

  •  0
  • codeNinja  · 技术社区  · 10 年前

    奇怪的问题。。。我知道。让我解释一下。

    这是我的文本表

        quota     |    metric_id
         100      |        1
         20       |        2
         100      |        15
         50       |        1
         30       |        2
         20       |        15
         50       |        1
         200      |        2
         10       |        15
    

    我需要一个SELECT语句,该语句将返回以下内容

        id_1    |     id_2     |      id_15 
        200     |     250      |      130
    

    以下是数据:

    Column `id_1` is sum of the 3 rows where `metric_id=1`
    Column `id_2` is sum of the 3 rows where `metric_id=2`
    Column `id_15` is sum of the 3 rows where `metric_id=15`
    

    有什么帮助吗?

    2 回复  |  直到 10 年前
        1
  •  0
  •   raina77ow    10 年前

    一种可能的方法:

    SELECT SUM(quota * (metric_id = 1)) AS id_1,
           SUM(quota * (metric_id = 2)) AS id_2,
           SUM(quota * (metric_id = 15)) AS id_15
    FROM Table1
    

    Demo 。非常简单: metric_id = N 对于属性等于N的行为1,对于所有其他行为0。乘法运算 quota 按1是 定额 ,0-0,其余的任务对于 SUM() 作用

        2
  •  0
  •   rs.    10 年前

    试试这个

    select SUM(case when metric_id = 1 then quota END) id_1
           SUM(case when metric_id = 2 then quota END) id_2
           SUM(case when metric_id = 15 then quota END) id_15
    FROM Table1