안녕하세요~
박스당 중량을 기준으로 주문을 분할하는 쿼리 문의 드립니다.
아래 엑셀표를 보시면 주문 테이블이 있는데 품목마다 박스당 중량이 있습니다.
주문테이블 | |||
품목명 | 단위 | 박스당중량 | 주문량 |
피자 | kg | 10 | 23 |
브리또 | kg | 10 | 20 |
쿼사디아 | kg | 10 | 7 |
피자의 경우 박스당 중량이 10kg 이니 주문량 23kg면 10kg * 2박스 + 낱개 3kg 1박스가 나와야합니다.
그리고 쿼사디아는 박스당 중량보다 적으니 7kg 으로 처리되면 되구요
아래는 원하는 결과입니다.
주문분할 (박스당중량 기준 분할) | ||
품목명 | 단위 | 분할 |
피자 | kg | 10 |
피자 | kg | 10 |
피자 | kg | 3 |
브리또 | kg | 10 |
브리또 | kg | 10 |
쿼사디아 | kg | 7 |
쳇 GPT당 씨름하다가 결국 답을 못찾았습니다.
고수님들의 고견 부탁드립니다!
참고요..
with tmp as (
select '피자' as prd, 'kg' as unit, 10 as box, 23 as qty union all
select '브리또' as prd, 'kg' as unit, 10 as box, 20 as qty union all
select '쿼사디아' as prd, 'kg' as unit, 10 as box, 7 as qty
),
nums AS (
SELECT 1 as n
UNION ALL
SELECT n + 1 FROM nums
WHERE n < 10
)
select
prd,
unit,
iif(a.qty - b.n * box > 0, box, a.qty - (b.n-1) * box) as nqty
from tmp a
cross join nums b
where b.n <= ceiling(qty*1.0/box)
order by a.qty desc