728x90
반응형

양 비율로 배분할때 마지막 DATA에 나머지 양 계산해서 넣는 쿼리

1. 변수

 - :V_DIV_QTY : 배분 전체양

2. ROW_NUMBER로 SEQ를 구하고, 전체 ROW 수로 LAST_SEQ를 구해서 SEQ와 LAST_SEQ가 같을 경우, 즉 마지막 ROW일 경우

전체 양에서 마지막ROW 이전의 합계양을 빼서 나머지 양을 마지막 ROW 값으로 조회한다.

 

SELECT TT1.*
     , DECODE(SEQ,LAST_SEQ, :V_DIV_QTY - SUM(ALOC_QTY) OVER()+ALOC_QTY,ALOC_QTY) AS ALOC_QTY
FROM
(
    SELECT
         T1.*
        ,FLOOR(:V_DIV_QTY * A_QTY/SUM(A_QTY) OVER()) AS ALOC_QTY
        ,ROW_NUMBER() OVER(ORDER BY KEY1,KEY2) AS SEQ
        ,COUNT(*) OVER() AS LAST_SEQ      
    FROM (
        SELECT 
             KEY1,KEY2, A_QTY

        FROM TB_AA WHERE KEY3='AA'

    ) T1
) TT1 

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,