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 分组后,求每组某列最大?
按 Sql Server 中的一列分组并按未包含在聚合函数或 GROUP BY 子句中的另一列排序