당일입고취소건 제외 추출 0 4 900

by 최원준 [SQL Query] [2014.08.18 23:35:22]


안녕하세요.

동일한 날의 같은 거래처의 입고 취소를 제외 하고 순수 입고와 취소건만 추출 하고자 합니다.

발생일자           거래처               수량            입/취소여부

20000101       A                       100              Y                         --> 추출대상

20000101       B                        500              Y

20000101       B                        500              N

20000101       B                         300             Y                        --> 추출대상

20000101        C                        150             Y                        --> 추추대상

답변 부탁드립니다.

by 비주류 [2014.08.19 00:48:51]
-- 입고, 취소량이 같다고 가정
with t("발생일자","거래처","수량","입/취소여부") as (
    select '20000101','A',100,'Y' from dual union all
    select '20000101','B',500,'Y' from dual union all
    select '20000101','B',500,'N' from dual union all
    select '20000101','B',300,'Y' from dual union all
    select '20000101','C',150,'Y' from dual
)
select  "발생일자",
        "거래처",
        "수량",
        "입/취소여부",
        decode(count(*) over (partition by seq, "발생일자", "거래처", "수량"), 1, '추출대상') 대상여부
from    (
            select  row_number() over (partition by "발생일자", "거래처", "수량", "입/취소여부" order by "입/취소여부") seq,
                    t.*
            from    t
        ) v
order by "발생일자", "거래처", "수량" desc, "입/취소여부" desc

 


by 한방눈 [2014.08.19 09:32:23]
with t("발생일자","거래처","수량","입/취소여부") as (
    select '20000101','A',100,'Y' from dual union all
    select '20000101','B',500,'Y' from dual union all
    select '20000101','B',500,'N' from dual union all
    select '20000101','B',300,'Y' from dual union all
    select '20000101','C',150,'Y' from dual
)
select *
  from t 
 where ("발생일자","거래처","수량") not in (
        select "발생일자","거래처","수량"
          from t
         where "입/취소여부" = 'N'
)
  ;

 


by 마농 [2014.08.19 09:37:32]

1. 예시 자료엔 정렬 기준이 없네요.
  - 위와 같이 정렬될 정렬 기준 항목이 필요합니다.
2. 동일 금액이 반복적으로 입/취소 되는 경우에 대한 고려가 필요합니다.
  - 500Y > 500Y > 500N 의 경우 3번째 취소와 함게 제거될 대상이
  - 첫번째 자료일까요? 두번째 자료일까요?


by zzang [2014.08.19 13:59:28]

답변 정말 감사합니다.

아빠의 계정을 사용하여 질문을 드리다보니...  ㅜㅜ;;(회원 가입을 꼭 하겠습니다.)

아빠가 오셔서 불가능 이라는 답변을 주셨습니다.(현재 질의 Key 기준으로는.....,)

사유는 취소건이 예전 입고의 취소건 시, 당일 동일 거래처,수량 입고 시 왜곡 되는 처리 결과 발생,

만약, 테이블의 설계시 취소건의 원전표를 관리 한다면 가능이라고..... ㅜㅜ;;

제가 생각이 짧아서... 열심히 공부 하겠습니다.

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