반응형

SELECT
CASE WHEN 나이 >= 1 AND 나이 < 20 THEN '20미만'
WHEN 나이 >= 20 AND 나이 < 30 THEN '30미만'
WHEN 나이 >= 30 AND 나이 < 40 THEN '40미만' END AS 나이
, NVL(SUM(CASE WHEN 색상명 = '감색' THEN 판매수량 END), 0) AS 감색
, NVL(SUM(CASE WHEN 색상명 = '노랑색' THEN 판매수량 END), 0) AS 노랑색
, NVL(SUM(CASE WHEN 색상명 = '파랑색' THEN 판매수량 END), 0) AS 파랑색
FROM 입력
GROUP BY
CASE WHEN 나이 >= 1 AND 나이 < 20 THEN '20미만'
WHEN 나이 >= 20 AND 나이 < 30 THEN '30미만'
WHEN 나이 >= 30 AND 나이 < 40 THEN '40미만' END;

위의 구분 이외에 더 조건이 들어간다면 조건에 맞춰 CASE WHEN을 추가하면 됩니다.

단, SELECT LIST 굵은글씨 부분의 CASE WHEN을 추가하면 반드시 Group by아래의 CASE WHEN도 같이 맞춰 주어야 합니다. ( SUM내부의 CASE WHEN은 관계없음. )

------------------------------------------------------------------------------------

select t_rank, min(to_number(t_age))
    from test_user
 group by t_rank
 having min(to_number(t_age)) > 5
order by case when t_rank = '주임' then '1'
              when t_rank = '대리' then '2'
              when t_rank = '과장' then '3'
              when t_rank = '부장' then '4'
              when t_rank = '이사' then '5'
              when t_rank = '사장' then '6' end asc;

------------------------------------------------------------------------------------

SELECT
  CASE
    WHEN 제품 = ‘HP’ THEN 제품
    WHEN 제품 = ‘LD’ THEN 등급 ,
    WHEN 등급 = ‘P530C’ THEN 등급
    ELSE ’기타‘
  END
  , SUM(총매출), SUM(총수량).....
FROM 매출테이블
WHERE 매출일자 LIKE ’9808%’
GROUP BY
  CASE
    WHEN 제품 = ‘HP’ THEN 제품
    WHEN 제품 = ‘LD’ THEN 등급 ,
    WHEN 등급 = ‘P530C’ THEN 등급
    ELSE ’기타‘
  END

반응형

'개발 및 관리 > Oracle 9i, 10g, 11g, 12c, 19c' 카테고리의 다른 글

[sqlplus] shutdown immediate VS [os상] svrctl  (0) 2022.03.12
SQL 우선순위  (0) 2022.03.10
ORACLE 운영 관련 View  (0) 2022.02.15
Oracle DB 점검  (0) 2022.02.15
Oracle RAC 기동 및 종료 의미  (0) 2022.02.15