TB1 (라벨테이블)
품번 출고수량
A 45
B 22
TB2 (기준정보테이블)
품번 SNP
A 20
B 10
위 정보를 가지고 결과값을 아래와 같이 나와야합니다.
SNP수만큼 나뉘어 나와야 합니다.
품번 수량
A 20
A 20
A 5
B 10
B 10
B 2
SQL로 처리해야하는데 어떻게 해야하나요?
TB1 (라벨테이블)
품번 출고수량
A 45
B 22
TB2 (기준정보테이블)
품번 SNP
A 20
B 10
위 정보를 가지고 결과값을 아래와 같이 나와야합니다.
SNP수만큼 나뉘어 나와야 합니다.
품번 수량
A 20
A 20
A 5
B 10
B 10
B 2
SQL로 처리해야하는데 어떻게 해야하나요?
declare @tb1 table
(
C1 VARCHAR(1)
,C2 INT
)
declare @tb2 table
(
C1 VARCHAR(1)
,C2 INT
)
declare @tb3 table
(
C1 VARCHAR(1)
,C2 INT
)
INSERT @tb1 VALUES('A',45),('B',22)
INSERT @tb2 VALUES('A',20),('B',10)
WHILE ( SELECT COUNT(*) FROM @tb1 WHERE C2 > 0) > 0
BEGIN
INSERT @tb3
SELECT
A.C1
, CASE WHEN A.C2 > B.C2 THEN B.C2 ELSE A.C2 END
FROM @tb1 AS A
LEFT OUTER JOIN @tb2 AS B
ON A.C1 = B.C1
UPDATE @tb1 SET
C2 = A.C2 - B.C2
FROM @tb1 AS A
INNER JOIN
(
SELECT
A.C1
, CASE WHEN A.C2 > B.C2 THEN B.C2 ELSE A.C2 END AS C2
FROM @tb1 AS A
LEFT OUTER JOIN @tb2 AS B
ON A.C1 = B.C1
) AS B ON
B.C1 = A.C1
END
SELECT * FROM @tb3 ORDER BY C1 , C2 DESC