簡體   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