쿼리 결과에서 중복되는 셀 제거? 0 3 3,276

by 지누기 [SQL Query] [2013.08.23 18:26:24]


안녕하세요

쿼리 공부 중에 문득 궁금한 점이 생겨서 질문 드립니다.

다음과 같은 쿼리 결과가 있을 때, 쿼리 결과 상에서 중복되는 결과 값을 

엑셀의 셀병합 처럼 보이지 않게('null'로 표시) 하는 것이 가능할지 알고 싶습니다.

원래 결과 :

10   김씨 ₩30,000
10   이씨 ₩50,000
10   박씨 ₩100,000
20   김씨 ₩30,000
20   박씨 ₩100,000
30   김씨 ₩200,000
30   이씨 ₩10,000
30   박씨 ₩20,000

원하는 결과 표시 방법 :

10   김씨 ₩30,000
  이씨 ₩50,000
  박씨 ₩100,000
   20   김씨 ₩30,000
  박씨 ₩100,000
30   김씨 ₩200,000
  이씨 ₩10,000
  박씨 ₩20,000

화면에서 처리를 하는 것도 방법일 수 있으나, 쿼리로 짠다면 어떤 방식으로 가능할지 알고 싶습니다.

답변 부탁드릴께요~
by 우리집아찌 [2013.08.23 18:47:15]
WITH T (V1,V2,V3) AS (
   SELECT '10','김씨','₩30,000' FROM DUAL UNION ALL
   SELECT '10','이씨','₩50,000' FROM DUAL UNION ALL
   SELECT '10','박씨','₩100,000' FROM DUAL UNION ALL
   SELECT '20','김씨','₩30,000' FROM DUAL UNION ALL
   SELECT '20','박씨','₩100,000' FROM DUAL UNION ALL
   SELECT '30','김씨','₩200,000' FROM DUAL UNION ALL
   SELECT '30','이씨','₩10,000' FROM DUAL UNION ALL
   SELECT '30','박씨','₩20,000' FROM DUAL 
)
SELECT DECODE(rn , 1 , v1) , v2 , v3 FROM
(SELECT T.* , ROW_NUMBER() OVER(PARTITION BY V1 ORDER BY ROWNUM ) rn FROM T ) 
 

by 혼돈의카오스 [2013.08.23 18:55:37]

자주보는 개념인데.. 역시나 새롭네요 ㅠ
혹시 row_number()와 rownum의 차이가 먼지 쉽게 설명해주실수 있나요?

by 아린 [2013.08.23 18:57:39]
-- 정렬순서가 있으면 rownum 대신 사용하세요.
SELECT NULLIF(v1, LAG(v1) OVER(PARTITION BY v1 ORDER BY ROWNUM)) cd
     , v2, v3
  FROM t
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입