sql query 0 3 3,482

by 트집이 [SQL Query] oracle query [2018.04.12 11:27:40]


-- 1번

WITH A AS (
    SELECT '' V5, '' V4, 'AAA' V1, '' V0 FROM DUAL
    UNION ALL
    SELECT '' V5, '' V4, 'BBB' V1, '' V0 FROM DUAL
    UNION ALL
    SELECT '' V5, '' V4, '' V1, 'CCC' V0 FROM DUAL
    UNION ALL
    SELECT 'DDD' V5, '' V4, '' V1, '' V0 FROM DUAL
    UNION ALL
    SELECT '' V5, 'EEE' V4, '' V1, '' V0 FROM DUAL
)
SELECT * FROM A;

 

-- 2번
WITH A AS (
    SELECT 'DDD' V5, 'EEE' V4, 'AAA' V1, 'CCC' V0 FROM DUAL
    UNION ALL
    SELECT '' V5, '' V4, 'BBB' V1, '' V0 FROM DUAL
)
SELECT * FROM A

 

위 1번과 같은 결과 데이터를 가지고 2번과 같은 결과를 얻고 싶은데... 고수님들의 도움 부탁드립니다.

 

 

 

 

by 우리집아찌 [2018.04.12 12:59:42]
WITH A AS (
    SELECT '' V5, '' V4, 'AAA' V1, '' V0 FROM DUAL
    UNION ALL
    SELECT '' V5, '' V4, 'BBB' V1, '' V0 FROM DUAL
    UNION ALL
    SELECT '' V5, '' V4, '' V1, 'CCC' V0 FROM DUAL
    UNION ALL
    SELECT 'DDD' V5, '' V4, '' V1, '' V0 FROM DUAL
    UNION ALL
    SELECT '' V5, 'EEE' V4, '' V1, '' V0 FROM DUAL
)

 
          
SELECT RN 
     , MIN(V5) V5
     , MIN(V4) V4
     , MIN(V1) V1
     , MIN(V0) V0
  FROM  ( SELECT A.*
      , LEAST ( ROW_NUMBER() OVER(ORDER BY V5 ) 
              , ROW_NUMBER() OVER(ORDER BY V4 )  
              , ROW_NUMBER() OVER(ORDER BY V1 ) 
              , ROW_NUMBER() OVER(ORDER BY V0 ) 
              ) RN
          FROM A )
GROUP BY RN
 ;

 


by 우리집아찌 [2018.04.12 13:03:27]

마농님이 짜주셨던거

안보고 짜려니까 생각이 좀 안나네요.. 

http://www.gurubee.net/article/79341


by 마농 [2018.04.12 13:12:07]
SELECT *
  FROM (SELECT ROW_NUMBER() OVER(PARTITION BY gb ORDER BY v) rn
             , gb
             , v
          FROM a
         UNPIVOT (v FOR gb IN (v5, v4, v1, v0))
        )
 PIVOT (MIN(v) FOR gb IN ('V5' v5, 'V4' v4, 'V1' v1, 'V0' v0))
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입