세로에서 가로로 출력.. 피벗?같은 0 1 609

by 킨지 [SQL Query] [2020.02.07 00:03:39]


질문.jpg (410,577Bytes)

아래의 이미지처럼 바꿀수가 있나요...?

by 마농 [2020.02.07 07:57:45]
WITH t(계약번호, 업체, 식별번호, 상품명, 종류, 종류값, 단위값) AS
(
          SELECT 123456700, '대한민국', 778451, '자동차', '용량'      , '20'    , 'KG'   FROM dual
UNION ALL SELECT 123456700, '대한민국', 778451, '자동차', '재질'      , 'POLY'  , ''     FROM dual
UNION ALL SELECT 123456700, '대한민국', 778451, '자동차', '크기(가로)', '300'   , 'M'    FROM dual
UNION ALL SELECT 123456700, '대한민국', 778451, '자동차', '크기(세로)', '400'   , 'M'    FROM dual
UNION ALL SELECT 123456700, '대한민국', 997841, '버스'  , '용량'      , '30'    , 'KG'   FROM dual
UNION ALL SELECT 123456700, '대한민국', 997841, '버스'  , '재질'      , 'POLY'  , ''     FROM dual
UNION ALL SELECT 123456700, '대한민국', 997841, '버스'  , '크기(가로)', '350'   , 'M'    FROM dual
UNION ALL SELECT 123456700, '대한민국', 997841, '버스'  , '크기(세로)', '450'   , 'M'    FROM dual
UNION ALL SELECT 123456700, '대한민국', 997841, '버스'  , '크기(두께)', '600'   , 'M'    FROM dual
UNION ALL SELECT 123456700, '대한민국', 997841, '버스'  , '강도'      , '186.33', 'N/MM' FROM dual
)
-- 1. GROUP BY, MIN(DECODE())
SELECT 계약번호, 업체, 식별번호, 상품명
     , MIN(DECODE(종류, '용량'      , 종류값 || 단위값)) "용량"      
     , MIN(DECODE(종류, '재질'      , 종류값 || 단위값)) "재질"      
     , MIN(DECODE(종류, '크기(가로)', 종류값 || 단위값)) "크기(가로)"
     , MIN(DECODE(종류, '크기(세로)', 종류값 || 단위값)) "크기(세로)"
     , MIN(DECODE(종류, '크기(두께)', 종류값 || 단위값)) "크기(두께)"
     , MIN(DECODE(종류, '강도'      , 종류값 || 단위값)) "강도"      
  FROM t
 GROUP BY 계약번호, 업체, 식별번호, 상품명
;
-- 2. PIVOT
SELECT *
  FROM (SELECT 계약번호, 업체, 식별번호, 상품명
             , 종류, 종류값 || 단위값 값
          FROM t
        )
 PIVOT (MIN(값) FOR 종류 IN ( '용량'       "용량"      
                            , '재질'       "재질"      
                            , '크기(가로)' "크기(가로)"
                            , '크기(세로)' "크기(세로)"
                            , '크기(두께)' "크기(두께)"
                            , '강도'       "강도"      
                            ) )
;

 

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