컬럼의 금액을 그대로 끌고오려 합니다.. 0 5 2,002

by 여비몬 [Oracle 기초] [2015.06.25 17:05:42]


안녕하세요 이부분을 잘 몰라 여쭙게되었습니다..

아래의 쿼리를 실행하면

select b.item, sum(a.qty+a.price)

  from table a, table b

where a.item = b.item

 

아이템        금액

itemb         30,000

itembF        null

 

위의 결과값처럼 item 뒤에 F자가 붙는 item만 null로 되어있습니다.

원본코드인 itemb의 가격을 그대로 끌고오려면 어떻게해야할까요...?

다른 코드들인 itema 라면 itemaF인 코드는 금액이 null로 들어가 있습니다.

by 창조의날개 [2015.06.25 17:24:59]
-- TABLE A에 ITEM이 유일하다고 가정

select b.item
     , DECODE(REPLACE(A.ITEM,'F'),A.ITEM, (a.qty+a.price)
             ,(SELECT (qty+price) FROM tableA WHERE ITEM = REPLACE(A.ITEM,'F') )
       ) QP_SUM
  from table a, table b
where a.item = b.item
;

 

select b.item
     , DECODE((a.qty+a.price), NULL
            , (SELECT (qty+price) FROM tableA WHERE ITEM = REPLACE(A.ITEM,'F') )
            , (a.qty+a.price)
       ) QP_SUM
  from table a, table b
where a.item = b.item
;

 


by 여비몬 [2015.06.25 17:55:11]

또 여쭤봐서 죄송합니다ㅜㅜ

item뿐만아니라 여러가지가 들어있는데 마지막 F를 체크할수있는 방법이 있을까요..?


by 창조의날개 [2015.06.25 18:00:14]

SELECT SUBSTR('ABDHF',-1,1) FROM DUAL

이렇게 하시면 마지막 글자를 추출 할 수 있습니다.

 


by jkson [2015.06.25 18:02:12]

select b.item, sum(a.qty+a.price)
  from table a, table b
 where a.item = decode(substr(b.item,-1),'F',substr(b.item,1,length(b.item)-1),b.item)
 group by b.item

by 여비몬 [2015.06.25 18:22:01]

답변주신분들 정말 감사합니다..ㅜㅜ

공교롭게도 MSSQL이라 SUBSTR도 안먹히고 REPLACE도 마지막문자열을 어떻게 가져오는지 모르겠네요...CASE로 바꾸고있는데 제가잘못하고있는건지 확인을좀 해봐야겠네요ㅜㅠ

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