안녕하세요... 프로그램을 하나 작업하고 있는데요. 작업진행간 막히는 부분이 있어 조언을 구하고자합니다. 테이블 2개 (주문테이블, 주문상품테이블) 조인을 통해 결과값을 도출하고있습니다. SELECT x.orderNum AS '주문번호' , x.deliveryPay AS '배송비' FROM orderTbl AS x LEFT JOIN ordproductTbl AS y ON x.orderNum = y.orderNum WHERE x.orderNum != '' ORDER BY x.ordDate DESC 위 쿼리문을 실행하면 아래처럼 결과값이 나오는데요 결과값을 보면 191231145109863 이라는 주문번호에 각각 배송비가 3000원이 부과되는걸로 쿼리문이 나옵니다.(원래는 191231145109863 주문번호가 3000원입니다) 제가 원하는 결과값은 191231145109863 주문번호 3개중에서 한개에만 3000원이 표시되고 나머지는 0 으로 표시되게 하고싶은데요 이렇게, 저렇게 방법을 동원해봐도 원하는 결과값이 나오지 않네요.. 고수님들의 조언좀 부탁드립니다. 감사합니다.
SELECT (CASE @grp WHEN a.주문번호 THEN @rownum:=@rownum+1 ELSE @rownum:=1 END) rnum , a.주문번호 , CASE WHEN @rownum = 1 THEN a.배송비 ELSE 0 END 배송비 , (@grp := y.주문번호) FROM ( SELECT x.orderNum AS 주문번호 , x.deliveryPay AS 배송비 FROM orderTbl AS x LEFT JOIN ordproductTbl AS y ON x.orderNum = y.orderNum WHERE x.orderNum != '' ORDER BY x.ordDate DESC --??? ) a , ( SELECT @rownum:=0, @grp:='' FROM dual ) b ;
select orN as '주문번호', (case when rnum=1 then dP else 0 end) as '배송비' from( SELECT x.orderNum as orN , x.deliveryPay AS dP, ROW_NUMBER() over (partition by x.orderNum order by x.ordDate desc) as rnum FROM orderTbl AS x LEFT JOIN ordproductTbl AS y ON x.orderNum = y.orderNum WHERE x.orderNum != '' ) T
도움이 되시길 바랍니다.