programing

Oracle에서 사례 문장을 기반으로 Group By를 사용하는 방법은 무엇입니까?

telebox 2023. 6. 21. 22:31
반응형

Oracle에서 사례 문장을 기반으로 Group By를 사용하는 방법은 무엇입니까?

Oracle을 사용하는 SQL 쿼리가 있습니다.CASE날짜 열이 현재 날짜보다 작거나 큰지 비교합니다.하지만 어떻게 사용합니까?CASE- a에 있는 진술GROUP BY- 진술?저는 각각의 경우의 기록을 세고 싶습니다.

예.

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;

도움이 되길...

추가 입력으로, 이 스레드와 관련이 없지만 절별로 그룹에 언급하지 않고 사례 진술을 집계할 수도 있습니다.

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;

언급URL : https://stackoverflow.com/questions/11325268/how-do-i-use-group-by-based-on-a-case-statement-in-oracle

반응형