[英]How do I use Group By based on a Case statement in Oracle?
我有一個SQL查詢,我使用Oracle CASE
來比較日期列是否小於或大於當前日期。 但是如何在GROUP BY
-statement中使用CASE
GROUP BY
statement? 我想在每種情況下統計記錄。
例如
select
(case
when exp_date > sysdate then 1
when exp_date <= sysdate then 2
else 3
end) expired, count(*)
from mytable
group by expired
但是我在嘗試這個時遇到錯誤: ORA-00904
。 有什么建議?
select
(case
when exp_date > sysdate then 1
when exp_date <= sysdate then 2
else 3
end) expired, count(*)
from mytable
group by (case
when exp_date > sysdate then 1
when exp_date <= sysdate then 2
else 3
end)
使用內聯視圖:
SELECT expired,
count(*)
FROM (SELECT (CASE
WHEN exp_date > SYSDATE THEN 1
WHEN exp_date <= SYSDATE THEN 2
ELSE 3
END) AS expired
FROM mytable)
GROUP BY expired;
希望能幫助到你...
作為附加輸入,雖然它與此線程無關,但您也可以聚合case語句而不在group by子句中提及它。
SELECT
WORK_ORDER_NUMBER,
SUM(CASE WHEN STOCK_CODE LIKE 'xxxx' THEN STOCK_QUANTITY ELSE 0 END) AS TOTAL
FROM Table
GROUP BY WORK_ORDER_NUMBER;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.