세로로 출력되는 데이터를 가로로 나열하고싶은데 어떻게 해야할까요..? 0 10 1,315

by 초보 [Oracle 기초] [2022.06.07 10:27:44]


캡처1.PNG (16,063Bytes)
캡처2.PNG (17,485Bytes)

WITH W_STYLE AS                                                                                                         
     (SELECT INFO.DIVISION_CD, INFO.STYLE_CD, INFO.STYLENAME,                                                   
       DENSE_RANK() OVER(ORDER BY NVL(SUM(DECODE(SALE.WORK_GU, 0, SALE.QTY, 1, -SALE.QTY)),0) DESC) RANK_NO 
        FROM  BIZ_STYLEINFO INFO, BIZ_SALE SALE                                                                 
       WHERE  INFO.DIVISION_CD  = '0'                                                                 
         AND  INFO.STYLE_CD     = SALE.STYLE_CD                                                                 
         AND  SALE.DIVISION_CD  = '0'                                                                 
         AND  INFO.EXTRA_S_2    = '0'                                                                         
         AND  INFO.SECTION02_CD = '1'                                                                         
    GROUP BY  INFO.DIVISION_CD, INFO.STYLE_CD, INFO.STYLENAME                                                   
     )
     
 SELECT A.RANK_NO, A.STYLE_CD, A.STYLENAME, B.IMAGE, C.SHOP_CD,                    
        CASE WHEN C.SHOP_CD IS NULL THEN  0                                        
             WHEN C.SHOP_CD IS NOT NULL THEN 1 END AS CK                           
   FROM  W_STYLE         A                                                         
        ,BIZ_STYLE_IMAGE B                                                         
        ,BIZ_RUNBS       C                                                                                                             
  WHERE  A.DIVISION_CD    = '0'                                          
    AND  B.DIVISION_CD(+) = '0'                                          
    AND  B.STYLE_CD(+)    = A.STYLE_CD                                             
    AND  B.STYLE_SEQ(+)   = '01'                                                 
    AND  B.IMAGE_SEQ(+)   = '1'                                                  
    AND  C.DIVISION_CD(+) = '0'                                          
    AND  C.STYLE_CD(+)    = A.STYLE_CD                                             
    AND  C.SHOP_CD(+)     = '50485'                                                                                                
     AND A.RANK_NO  <= '10'                                                 
ORDER BY A.RANK_NO          

 

현재 SQL문 조회결과 사진과 같이 세로로 출력되는 데이터가 있습니다.

저 조회결과를 1번째 사진 1번째줄을 예시로 들자면

1

310825742

3FY742(P)

null

0

식으로 출력되게 하고싶은데 어떻게 해야할지를 모르겠습니다..

캡처2의 사진과 같이 출력해서 나열하고싶은데 어렵네요.

혹시 SQL로 가능할까요?

by 동동동 [2022.06.07 10:49:23]

가로를 세로로 표시면..UNPIVOT 을 이용하면 될것 같습니다.

 

WITH t AS
(
SELECT 1 pk, 2 c1, 3 c2 FROM dual UNION ALL 
SELECT 2,    3,    4    FROM dual
)
SELECT *
  FROM t
 UNPIVOT (c FOR gb IN (c1, c2))
 ORDER BY pk, gb
;

 


by 초보 [2022.06.07 11:11:36]

친절한 답변 감사합니다! 확인해보니 BLOB타입 때문에 SQL로 작성하기엔 부적절한것 같네요 ㅜㅜ..


by 우리집아찌 [2022.06.07 11:00:53]

이미지(blob)가 있으면 좀 애매할거 같아요.

어플리케이션단에서 해결하는게 좋을듯합니다.


by 초보 [2022.06.07 11:10:18]

답변 감사합니다! 이미지때문에 안되는군요ㅜㅜ..


by 마농 [2022.06.07 11:04:46]

쿼리로 해도 되긴 하겠지만...
원하는 화면은 어플리케이션에서 구현하는게 적절해 보입니다.


by 초보 [2022.06.07 11:09:57]

답변 감사합니다! 


by 마농 [2022.06.07 11:10:48]

DECODE(SALE.WORK_GU, '0', SALE.QTY, 0, -SALE.QTY)
DECODE 사용법이 이상합니다.
'0' 이나 0 이나 그게 그거 이므로 뒤에 0 을 만족하는 -SALE.QTY 는 나올 수가 없습니다.


by 초보 [2022.06.07 11:12:42]

말씀 감사합니다! 수정하겠습니다!


by 초보 [2022.06.07 11:18:40]

혹시 만약에 이미지를 배제하고 SQL을 작성한다면 어떻게 해야할까요..?


by 마농 [2022.06.07 11:23:41]

방법은 이미 동동동님께서 예시 쿼리 제시해 드렸습니다.
서로 다른 데이터 타입은 varchar2 로 통일시켜 주셔야 하고...
BLOB 은 어차피 안될 듯 하고
억지로 만들면 만들 수 는 있습니다만... 굳이....

그리고 요구사항도 모호합니다.
원본은 10 건인데 원하는 결과는 1건만 보이는데?
특정 1건만 보고 싶은 것인지?
아니라면 10건의 자료를 어떤 형태로 보고싶은지?

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