SQL질문 드립니다 (엑셀처럼 데이터 출력을 해볼려는데 감이 잘 안옵니다 ) 0 3 1,021

by 성이 [SQL Query] 오라클. sql [2020.02.12 14:22:39]


222.png (28,329Bytes)
111.png (8,012Bytes)

안녕하세요 SQL 초보인데 막히는 부분이 있어서요

아래쿼리로 출력하면 이미지 111 처럼 나옵니다
222 이미지에 엑셀대로 출력을 하고 싶은데... DB출력에서 IN_ ~ 로시작하는게 양하 부분이고 OUT_~ 로 시작하는 컬럼이 적하 부분입니다
OPER 이 선사구여 즉~ 엑셀대로 

     IN_F2   IN_F2   IN_F4   IN_F5
JDL
     OUT_F2  OUT_F2  OUT_F4  OUT_F5
이런식으로 출력이 되게 하고 싶은데 감이 잘 안오네요 ㅠㅠ 조언 부탁드립니다.

지금 쿼리로는 한 선사에 양하,적하가 일렬로 나오는데 한 선사에 양하부분이 끝나면 그다음 적하 부분으로 넘어갔으면 하는 내용입니다
-----------------------------------------------------------------

SELECT 
    OPER,
    IN_F2,
    IN_M2,
    IN_F4,
    IN_M4,
    OUT_F2,
    OUT_M2,
    OUT_F4,
    OUT_M4
FROM (
    SELECT
        VSP_SHP_OPERATOR OPER,
        SUM(INF2) IN_F2,
        SUM(INM2) IN_M2,
        SUM(INF4) IN_F4,
        SUM(INM4) IN_M4,
        SUM(OUTF2) OUT_F2,
        SUM(OUTM2) OUT_M2,
        SUM(OUTF4) OUT_F4,
        SUM(OUTM4) OUT_M4
 FROM (
        SELECT
            VSP_SHP_OPERATOR, 
            NVL(DECODE(VSP_SHP_DISLOAD, 'D',  DECODE(VSP_SHP_STATUS, 'M', 0, DECODE (SUBSTR (VSP_SHP_ISO,1,  1),  '2',  1, 0))), 0) INF2,
            NVL(DECODE(VSP_SHP_DISLOAD, 'D',  DECODE(VSP_SHP_STATUS, 'M', DECODE(SUBSTR (VSP_SHP_ISO,1,  1),  '2',  1, 0))), 0) INM2,
            NVL(DECODE(VSP_SHP_DISLOAD, 'D',  DECODE(VSP_SHP_STATUS, 'M', 0, DECODE (SUBSTR (VSP_SHP_ISO,1,  1),  '2',  0, 1))), 0) INF4,
            NVL(DECODE(VSP_SHP_DISLOAD, 'D',  DECODE(VSP_SHP_STATUS, 'M', DECODE(SUBSTR (VSP_SHP_ISO,1,  1),  '2',  0, 1))), 0) INM4,
            NVL(DECODE(VSP_SHP_DISLOAD, 'L',  DECODE(VSP_SHP_STATUS, 'M', 0, DECODE (SUBSTR (VSP_SHP_ISO,1,  1),  '2',  1, 0))), 0) OUTF2,
            NVL(DECODE(VSP_SHP_DISLOAD, 'L',  DECODE(VSP_SHP_STATUS, 'M', DECODE(SUBSTR (VSP_SHP_ISO,1,  1),  '2',  1, 0))), 0) OUTM2,
            NVL(DECODE(VSP_SHP_DISLOAD, 'L',  DECODE(VSP_SHP_STATUS, 'M', 0, DECODE (SUBSTR (VSP_SHP_ISO,1,  1),  '2',  0, 1))), 0) OUTF4,
            NVL(DECODE(VSP_SHP_DISLOAD, 'L',  DECODE(VSP_SHP_STATUS, 'M', DECODE(SUBSTR (VSP_SHP_ISO,1,  1),  '2',  0, 1))), 0) OUTM4
        FROM 
           VSB_VOYAGE A,
           VSP_SHIP B,
           CDV_VESSEL C  
        WHERE 1=1 
        AND A.VSB_VOY_STATUS = 'D'      
        AND A.VSB_VOY_VESSEL = B.VSP_SHP_VESSEL(+)    
        AND A.VSB_VOY_VOYAGE = B.VSP_SHP_VOYAGE(+)
        AND A.VSB_VOY_BERTHNO <> 'OT'    
        AND B.VSP_SHP_CLASS <> 'OT'    
        AND B.VSP_SHP_PLANST = 'C'      
        AND A.VSB_VOY_CANCEL IS NULL
        AND SUBSTR(VSP_SHP_COMPDATE,1, 6) = '202001'
        AND A.VSB_VOY_VESSEL = C.CDV_VSL_CODE(+)    
        AND (
               C.CDV_VSL_PROVER NOT IN (
                     'VS','VU'
              )        
              OR C.CDV_VSL_PROVER IS NULL
            )    
      )
    GROUP BY VSP_SHP_OPERATOR
)

 

by 마농 [2020.02.12 16:43:20]
SELECT vsp_shp_operator 선사
     , DECODE(vsp_shp_disload, 'D', '양하', 'L', '적하', '', 'S.TTL') 구분
     , COUNT(CASE WHEN SUBSTR(vsp_shp_iso, 1, 1)  = '2' AND vsp_shp_status != 'M' THEN 1 END) f_20
     , COUNT(CASE WHEN SUBSTR(vsp_shp_iso, 1, 1)  = '2' AND vsp_shp_status  = 'M' THEN 1 END) m_20
     , COUNT(CASE WHEN SUBSTR(vsp_shp_iso, 1, 1) != '2' AND vsp_shp_status != 'M' THEN 1 END) f_40
     , COUNT(CASE WHEN SUBSTR(vsp_shp_iso, 1, 1) != '2' AND vsp_shp_status  = 'M' THEN 1 END) m_40
     , COUNT(CASE WHEN                                  AND vsp_shp_status != 'M' THEN 1 END) f_tot
     , COUNT(CASE WHEN                                  AND vsp_shp_status  = 'M' THEN 1 END) m_tot
     , COUNT(*) tot
  FROM vsb_voyage a
     , vsp_ship   b
     , cdv_vessel c
 WHERE 1=1
   AND a.vsb_voy_status = 'D'
   AND a.vsb_voy_vessel = b.vsp_shp_vessel(+)
   AND a.vsb_voy_voyage = b.vsp_shp_voyage(+)
   AND a.vsb_voy_berthno <> 'OT'
   AND b.vsp_shp_class   <> 'OT'
   AND b.vsp_shp_planst = 'C'
   AND a.vsb_voy_cancel IS NULL
   AND vsp_shp_compdate LIKE '202001'||'%'
   AND a.vsb_voy_vessel = c.cdv_vsl_code(+)
   AND (c.cdv_vsl_prover NOT IN ('VS', 'VU') OR c.cdv_vsl_prover IS NULL)
 GROUP BY vsp_shp_operator, ROLLUP(vsp_shp_disload)
;

 


by 성이 [2020.02.13 13:59:21]

아~ 정말 너무 감사합니다 ㅠㅠ 더 공부 해야겠네요


by 마농 [2020.02.13 14:09:00]

아우터 조인 등이 부적절하게 사용되었고
OR 조건도 의도에 맞게 사용된 것인지? 의심이 들긴 하지만.
일단 그부분은 건들지 않았습니다.
해당 사항이 적절한지 검토해 보시기 바랍니다.

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