메인쿼리 현재 고객이 구매하러 온 상품 금액(메인쿼리)에서. 전에 미리 적립한 예약된 영수증 금액(서브쿼리)를 뺄려고 합니다.
아래의 쿼리는 서브 쿼리로 둘 쿼리 내용 입니다.
SELECT SHOP.SHOP_CURR ||' '|| LTRIM(get_money_format(SUM(ADV.STORED_CREDIT_AMT + ADV.USED_AMT),2,1)) as LBL_ADVANCESALEBALANCE
FROM GWP_SHOP_INFO SHOP, GWP_ADVSALE_INFO ADV
WHERE SHOP.TO_SHOP_CODE = ADV.TO_SHOP_CODE
AND ADV.TO_SHOP_CODE = '300'
AND ADV.SALE_DATE=TO_DATE('20120322','YYYYMMDD') AND ADV.SALE_SEQ= '3'
GROUP by SHOP.SHOP_CURR
-----------------------------------------------
LBL_ADVANCESALEBALANCE
-----------------------------------------------
$ 500.00 이 나옵니다.
-----------------------------------------------
get_money_format : 소수점 프로시저
ADV.STORED_CREDIT_AMT : 사용금액
ADV.USED_AMT : 지불금액
SHOP.SHOP_CURR : 환종코드 ($) 나라별 화폐 단위
SHOP.TO_SHOP_CODE : 매장코드
AND ADV.SALE_DATE : 날짜
ADV.SALE_SEQ : 해당날짜의 영수증 순서 번호
서브쿼리의 중점은 상품을 미리 구매하기 위한 예약된 영수증 금액입니다.
아래는 메인 쿼리로 둘 쿼리의 내용입니다.
SELECT SHOP.SHOP_CURR ||' '|| LTRIM(get_money_format(SUM(SI.TOTAL_SALE_AMT),2,1)) as LBL_ADVANCESALESREDEEMED
FROM GWP_SHOP_INFO SHOP, GWP_SALE_INFO SI
WHERE SHOP.TO_SHOP_CODE = SI.TO_SHOP_CODE
AND SI.TO_SHOP_CODE = '300'
AND SI.SALE_DATE=TO_DATE('20120322','YYYYMMDD') AND SI.SALE_SEQ= '3'
GROUP by SHOP.SHOP_CURR
SI.TOTAL_SALE_AMT : GWP_SALE_INFO에 있는 현재 영수증 구매 토탈금액.
결과는
----------------------------------------------------
LBL_ADVANCESALESREDEEMED
----------------------------------------------------
$ 54.860.00
----------------------------------------------------
이렇게 나오는데.
이렇게 쿼리를 나누는 이유는 조회하는 날짜와 영수증 번호가 틀리기 때문입니다.
메인쿼리 $ 54.860.00 - 서브쿼리 $ 500.00 를 할려고 하는데. 별칭은 아무거나 해주셔도 상관 없습니다.
쿼리를 어떡해 짜야 될지. 고수님들 부탁 좀 드리겠습니다. ^^