Oracle SQL Group 按自制列? [复制]

Posted

技术标签:

【中文标题】Oracle SQL Group 按自制列? [复制]【英文标题】:Oracle SQL Group by self made column? [duplicate] 【发布时间】: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

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

【问题讨论】:

【参考方案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!

以上是关于Oracle SQL Group 按自制列? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

sql语言 怎么求每组最大,就是用group by 分组后,求每组某列最大?

oracle列转行函数

按 Sql Server 中的一列分组并按未包含在聚合函数或 GROUP BY 子句中的另一列排序

oracle按照指定列分组合计group by rollup()

SQL (Oracle):按特定列分组

hive sql语言问题,怎么按一列聚合第二列的多个值合并成1个值,再按这个值group by