테이블 A | 테이블B | ||||||
제품 | 규격 | 수량 | 제품 | 규격 | 수량 | ||
A | #2 | 5 | A | #2 | 2 | ||
A | #2 | 3 | B | #1 | 5 | ||
A | #1 | 5 | |||||
B | #1 | 10 | |||||
B | #5 | 5 |
결과 | |||
제품 | 규격 | 수량 | |
A | #2 | 6 | |
A | #1 | 5 | |
B | #1 | 5 | |
B | #5 | 5 | |
저 A B테이블로 결과를 나올려면 어떻게 쿼리를 해야 할까요????
같은제품 규격같은거끼리 더해서 빼주면 될거 같은데..
제품이 많아져서 일일이 빼는것은 안되고
먼가 고수님들의 도움을 받고 싶습니다.
Comment 4
-
catchv
2014.05.30 08:39
-
아싸라비아콜롬비아
2014.05.30 13:23
감사합니다 많은 도움이 되었습니다.
-
DECLARE @A TABLE (제품 VARCHAR(10), 규격 VARCHAR(10), 수량 INT)DECLARE @B TABLE (제품 VARCHAR(10), 규격 VARCHAR(10), 수량 INT)INSERT @ASELECT 'A', '#2', 5 UNION ALLSELECT 'A', '#2', 3 UNION ALLSELECT 'A', '#1', 5 UNION ALLSELECT 'B', '#1', 10 UNION ALLSELECT 'B', '#5', 5INSERT @BSELECT 'A', '#2', 2 UNION ALLSELECT 'B', '#1', 5SELECT A.제품, A.규격, 수량 = A.수량 - ISNULL(B.수량, 0)FROM (SELECT 제품, 규격, 수량 = SUM(수량) FROM @A GROUP BY 제품, 규격) A LEFT OUTER JOIN(SELECT 제품, 규격, 수량 = SUM(수량) FROM @B GROUP BY 제품, 규격) B ON A.제품 = B.제품 AND A.규격 = B.규격
-
아싸라비아콜롬비아
2014.05.30 13:23
감사합니다 많은 도움이 되었습니다.
WITH TableA aS
(
SELECT 'A' as [제품], '#2' as [규격] , 5 as [수량]
UNION ALL SELECT 'A' as [제품], '#2' as [규격] , 3 as [수량]
UNION ALL SELECT 'A' as [제품], '#1' as [규격] , 5 as [수량]
UNION ALL SELECT 'B' as [제품], '#1' as [규격] , 10 as [수량]
UNION ALL SELECT 'B' as [제품], '#5' as [규격] , 5 as [수량]
)
,
TableB aS
(
SELECT 'A' as [제품], '#2' as [규격] , 2 as [수량]
UNION ALL SELECT 'B' as [제품], '#1' as [규격] , 5 as [수량]
)
SELECT T.[제품], T.[규격], SUM(T.[수량]) AS [수량]
FROM
(
SELECT [제품], [규격], SUM([수량]) as [수량]
FROM TableA
GROUP BY [제품], [규격]
UNION ALL
SELECT [제품], [규격], SUM([수량]) * -1 as [수량]
FROM TableB
GROUP BY [제품], [규격]
) T
GROUP BY T.[제품], T.[규격]