이쿼리에서 AMNT_VATS행만 숫자에서 문자로 변경하고싶은데 가능한가요?굵게칠한부분입니다. 0 7 590

by darkload [2018.01.04 14:23:06]


작업3.png (12,380Bytes)

SELECT b.cust_name,c.item_name,A.item_type, A.chgo_date,A.cust_code,A.item_code,A.chgo_qnty,A.chgo_dann,A.chgo_amnt,(chgo_amnt*0.1) as chgo_vats,
       (A.chgo_amnt+(chgo_amnt*0.1)) as AMNT_VATS,(chgo_amnt) as TOTA_AMNT,(chgo_amnt*0.1) as TOTA_VATS,(A.chgo_amnt+(chgo_amnt*0.1)) as AMNT_VATSS
   FROM ITEM_CHGO as  A with(nolock)
       LEFT OUTER JOIN
       CUST_INFO B
    ON a.cust_code = b.cust_Code
    left outer join
       item_info c
       on a.item_code = c.item_code
   where c.cust_code = '0009'

by 마농 [2018.01.04 15:19:49]

where c.cust_code = '0009' 이 조건이 계속 거슬리네요.
왜 a.cust_code 가 아닌 c.cust_code 인가요?
질문에 답변 할 때 마다 a 로 고쳐 답변 다는데도 계속 c로 바꾸어 질문하시네요?
이 쿼리 맞는건가요? 잘 돌아가나요?


by darkload [2018.01.04 15:22:20]

아 오라클이아니라 ms-sql이고 마이빌더로 하는중이라 ㅎㅎㅎ 잘돌아가요 ㅎㅎsql 서버내에서는 아무이상없다고떠요

 


by 마농 [2018.01.04 15:26:16]

잘 돌아가는게 문제가 아닌데요?
오류가 안난다고 해서 정확한 거라고 할 수 없습니다.
잘못된 결과가 나올것 같은 쿼리인데요?
cust_code 는 a 와 b 에 있는 컬럼인데
조인도 a 와 b 로 하고 있구요
c 는 item_info 인데? 여기에도 cust_code 가 존재하나요?
3개 테이블의 관계가 명확한지 의문입니다.


by darkload [2018.01.04 15:27:51]

3개 테이블에 전부다 cust_code가 있습니다. 


by 마농 [2018.01.04 15:34:35]

그럼 item_info 에 대한 조인 조건(cust_code)이 누락된 거 아닌가요?


by 마농 [2018.01.04 15:38:15]
SELECT cust_name
     , item_name
     , chgo_date
     , cust_code
     , item_code
     , chgo_qnty
     , chgo_dann
     , chgo_amnt
     , chgo_vats
     , amnt_vats
       -- 금액 한글 변환 --
     , REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
       REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
       CONCAT
       ( SUBSTRING(v, 1, 1), CASE SUBSTRING(v, 1, 1) WHEN 0 THEN '' ELSE '천' END
       , SUBSTRING(v, 2, 1), CASE SUBSTRING(v, 2, 1) WHEN 0 THEN '' ELSE '백' END
       , SUBSTRING(v, 3, 1), CASE SUBSTRING(v, 3, 1) WHEN 0 THEN '' ELSE '십' END
       , SUBSTRING(v, 4, 1), CASE SUBSTRING(v, 1, 4) WHEN 0 THEN '' ELSE '조' END
       , SUBSTRING(v, 5, 1), CASE SUBSTRING(v, 5, 1) WHEN 0 THEN '' ELSE '천' END
       , SUBSTRING(v, 6, 1), CASE SUBSTRING(v, 6, 1) WHEN 0 THEN '' ELSE '백' END
       , SUBSTRING(v, 7, 1), CASE SUBSTRING(v, 7, 1) WHEN 0 THEN '' ELSE '십' END
       , SUBSTRING(v, 8, 1), CASE SUBSTRING(v, 5, 4) WHEN 0 THEN '' ELSE '억' END
       , SUBSTRING(v, 9, 1), CASE SUBSTRING(v, 9, 1) WHEN 0 THEN '' ELSE '천' END
       , SUBSTRING(v,10, 1), CASE SUBSTRING(v,10, 1) WHEN 0 THEN '' ELSE '백' END
       , SUBSTRING(v,11, 1), CASE SUBSTRING(v,11, 1) WHEN 0 THEN '' ELSE '십' END
       , SUBSTRING(v,12, 1), CASE SUBSTRING(v, 9, 4) WHEN 0 THEN '' ELSE '만' END
       , SUBSTRING(v,13, 1), CASE SUBSTRING(v,13, 1) WHEN 0 THEN '' ELSE '천' END
       , SUBSTRING(v,14, 1), CASE SUBSTRING(v,14, 1) WHEN 0 THEN '' ELSE '백' END
       , SUBSTRING(v,15, 1), CASE SUBSTRING(v,15, 1) WHEN 0 THEN '' ELSE '십' END
       , SUBSTRING(v,16, 1)
       , '원정'
       )
       , '1', '일'), '2', '이'), '3', '삼'), '4', '사'), '5', '오')
       , '6', '육'), '7', '칠'), '8', '팔'), '9', '구'), '0', ''  )
       AS amnt_vats_korean
  FROM (SELECT b.cust_name
             , c.item_name
             , a.chgo_date
             , a.cust_code
             , a.item_code
             , a.chgo_qnty
             , a.chgo_dann
             , a.chgo_amnt       AS chgo_amnt
             , a.chgo_amnt * 0.1 AS chgo_vats
             , a.chgo_amnt * 1.1 AS amnt_vats
             , RIGHT(CONCAT(REPLICATE('0', 16), a.chgo_amnt * 1.1), 16) v
          FROM item_chgo AS a WITH(NOLOCK)
          LEFT OUTER JOIN
               cust_info b
            ON a.cust_code = b.cust_Code
          LEFT OUTER JOIN
               item_info c
            ON a.item_code = c.item_code
           AND a.cust_code = c.cust_Code    -- 추가
         WHERE a.cust_code = '0009'
        ) a
;
-- 참조 : http://gurubee.net/lecture/2224

 


by darkload [2018.01.04 15:55:42]

감사합니다

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