안녕하세요. 이렇게 처리할 방법이 있나 해서 질문 드려봅니다.
예를들어 SELECT 결과값이
| 아파트1 | 60 | 30000 |
| 아파트1 | 60 | 35000 |
| 아파트1 | 70 | 40000 |
| 아파트1 | 80 | 45000 |
| 아파트2 | 100 | 50000 |
| 아파트2 | 120 | 50000 |
| 아파트3 | 100 | 50000 |
| 아파트4 | 100 | 50000 |
위 표와 같습니다.
아래 결과처럼 처리를 하고싶은데 고수분들 답변 부탁드리겠습니다.
대략 설명을 하자면 아파트명, 면적 순서로 정렬이 되어있는 상태이구요.
아파트명이 동일할 경우 다음 값은 NULL값이 표시되고
면적도 마찬가지로 동일한 아파트명에 한하여 면적이 동일할경우 다음 값음 NULL로 표시되게할 방법이 있을까요?
도움주시는분들 항상 감사드립니다.
with t (col1,col2,col3) as ( select '아파트1', 60, 30000 from dual union all select '아파트1', 60, 35000 from dual union all select '아파트1', 70, 40000 from dual union all select '아파트1', 80, 45000 from dual union all select '아파트2', 100, 50000 from dual union all select '아파트2', 120, 50000 from dual union all select '아파트3', 100, 50000 from dual union all select '아파트4', 100, 50000 from dual) select decode(rn1,1,col1) col1 , decode(rn2,1,col2) col2 , col3 from ( select col1,col2,col3 , row_number() over(partition by col1 order by col2,col3) rn1 , row_number() over(partition by col1,col2 order by col3) rn2 from t) ;
, ROW_NUMBER() OVER(PARTITION BY col1 ORDER BY col2, col3) rn1
, ROW_NUMBER() OVER(PARTITION BY col1, col2 ORDER BY col3) rn2
수정했습니다~
SELECT
DECODE(LAG(col1) OVER (ORDER BY col1,col2,col3),col1,NULL,col1) 아파트명
, DECODE(LAG(col2) OVER (PARTITION BY col1 ORDER BY col2,col3), col2, NULL, col2) 면적
, col3 가격
FROM t
ORDER BY t.col1, t.col2, t.col3
;
답변주신분들 감사드립니다!
해결했습니다!