select *
from
(
select '001' code, 100 val from dual union all
select '004' code, 400 val from dual union all
select '005' code, 500 val from dual union all
select '002' code, 200 val from dual
)
ORDER BY code
위 쿼리를 실행한 결과에 추가로
컬럼2개를 붙여서
가장 최소 코드와 가장 큰 코드에 val 값을 같이 나오게 하고 싶습니다
위에서 code 001 이 가장작은 코드이고 값이 100,
code 005 가 가장크고 값이 500 입니다.
code , val, MIN, max
001 100 100 500
002 200 100 500
004 400 100 500
005 500 100 500
여러방법으로 돌리면 만들어 낼 수는 있습니다.
이런 쿼리를 한방에 할수 있는 간단한 방법이나 분석함수가 있나해서 질문을 올립니다.
(* 예제는 의미만 전달할뿐이구요 code 는 어떤게 최소인지 최대인지 알수 없으므로
고정시킬 수는 없습니다.)
select A.CODE, A.VAL,
FIRST_VALUE(A.VAL) OVER(ORDER BY CODE) AS C1,
FIRST_VALUE(A.VAL) OVER(ORDER BY CODE DESC) AS C2
from ( select '001' code, 100 val from dual union all
select '004' code, 400 val from dual union all
select '005' code, 500 val from dual union all
select '002' code, 200 val from dual ) A
ORDER BY code