繁体   English   中英

Oracle CASE语句和

[英]Oracle CASE STATEMENT WITH SUM

我在使用select语句返回正确的信息时遇到问题

表:

name1  | name2  | amount
------ | ------ | --------
Fred   | Fred   | 10
Bob    | Fred   | 15
Sam    | Sam    | 100

这是我的查询

SELECT 
        CASE WHEN name1 <> name2 THEN name2
        ELSE name1 END as name,
        SUM(amount) as amount
FROM table
GROUP BY???

结果,我希望看到的是:

name  | amount
----- | ------
Fred  | 25
Sam   | 100

我尝试使用group by并收到错误消息,说这不是GROUP BY表达式。 如果我不使用分组,则会收到错误,而不是单组分组功能。 这种查询可能吗?

GROUP BY子句的计算结果必须与select子句的计算结果相同。 做这个:

SELECT 
    CASE WHEN name1 <> name2 THEN name2 ELSE name1 END as calc_name,
    SUM(amount) as amount
FROM table
GROUP BY CASE WHEN name1 <> name2 THEN name2 ELSE name1 END 

另外, name是保留关键字,因此我对该别名做了一些修改。

尝试为

SELECT ename,SUM(amount) amount FROM (
SELECT 
        CASE WHEN name1 <> name2 THEN name2
        ELSE name1 END as ename,
        amount
FROM table)
GROUP BY ename

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM