【问题标题】:Oracle SQL Group by self made column? [duplicate]Oracle SQL Group 按自制列? [复制]
【发布时间】:2013-04-19 11:53:23
【问题描述】:

我有这个声明:

SELECT CASE
          WHEN teile LIKE 'S%' THEN
           'vent'
          ELSE
           teile
       END AS teile,
       SUM(amount) 
.
 GROUP BY bereich, teile

结果是这样的

D1    10070
ER    6278
MO    6278
vent  20140
vent  20140
vent  20140

现在我想总结一下每个“发泄”的数量,然后再将其分组到“发泄”,看起来像这样:

D1   10070     
ER   6278     
MO   6278
vent 60420

用不同的东西试了好几次,但我就是不明白..

【问题讨论】:

    标签: sql oracle group-by


    【解决方案1】:

    另外一种方式:

    SELECT teile, SUM(amount) AS total_amt FROM
    (
     SELECT (CASE WHEN teile LIKE 'S%' THEN 'vent' ELSE teile END) AS teile
           , amount 
    FROM your_table
    )
    GROUP BY teile
    /
    

    【讨论】:

    • +1:我更喜欢这种方法,因为它遵循“不要重复自己”的原则。
    • 非常感谢大卫。
    【解决方案2】:

    SELECT 子句中的CASE 表达式放入您的GROUP BY 子句中:

    SELECT CASE
              WHEN teile LIKE 'S%' THEN
               'vent'
              ELSE
               teile
           END AS teile,
           SUM(amount) 
    ...
     GROUP BY 
           CASE
              WHEN teile LIKE 'S%' THEN
               'vent'
              ELSE
               teile
           END;
    

    【讨论】:

    • 之前尝试过,但没有成功 - 在更准确地查看您的声明之后,它成功了 - thx!
    猜你喜欢
    • 2017-01-01
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 2021-03-15
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多