seq | 날짜 | 구분 | 품명 | 수량 | 고유번호 |
1 | 14.11.01 | 매출 | 품목1 | 2 | 11011 |
2 | 14.11.01 | 매입 | 품목2 | 10 | 11000 |
3 | 14.11.03 | 매출 | 품목3 | 3 | 11031 |
4 | 14.11.03 | 매출 | 품목1 | 5 | 11012 |
5 | 14.11.03 | 매출 | 품목2 | 5 | 11000 |
6 | 14.11.04 | 매입 | 품목2 | 30 | 11001 |
7 | 14.11.04 | 매입 | 품목1 | 100 | 11012 |
8 | 14.11.05 | 매출 | 품목1 | 4 | 11011 |
9 | 14.11.06 | 매출 | 품목1 | 3 | 11012 |
10 | 14.11.06 | 매출 | 품목2 | 2 | 11000 |
위와 같은 값이 있을때
다음과 같은 두개의 결과값을 얻으려면 어떻게 쿼리를 날려야 할까요?
결과1
고유번호 | 입고수량 | 출고수량 | 현재수량(입고-출고) | |
11000 | 4 | -4 | ||
11001 | 30 | 30 | ||
. | ||||
. | ||||
. |
결과2
품명 | 고유번호 | 입고수량 | 출고수량 | 현재수량 |
품목1 | 11011 | 6 | -6 | |
품목1 | 11012 | 100 | 8 | 92 |
품목2 | 11000 | 10 | 7 | 3 |
품목2 | 11001 | 30 | 30 |
.
.
.
Comment 3
-
이리
2014.11.21 15:07
-
뇽이
2014.11.21 16:03
이리님..한가지만 추가로 여쭤봐도 될까요? 위 와 동일한 구조의 테이블이 년도별로 있을때
모든 테이블을 합산해서 보려면 어떻게 해야 할까요?
예를 들어 위와 같은 테이블이 년도별로
10, 11, 12,13,14 처럼 테이블명이 되어있다면...
위 쿼리를 년도별 쿼리를 날리는 것이 아니라,
여러개의 년도별 테이블을 한번에 조회하는 쿼리요
위 쿼리를 테이블별로
union all 을 해서 사용하면 되겠지만 그 방식 말고 다른 방법이 있을까요?
-
이리
2014.11.21 18:58
유니온을 쓰셔야 할 거 같습니다.
WITH Tbl_Test(seq, 날짜, 구분, 품명, 수량, 고유번호)
AS
(
SELECT 1, '14.11.01', '매출', '품목1', 2, 11011
UNION ALL
SELECT 2, '14.11.01', '매입', '품목2', 10, 11000
UNION ALL
SELECT 3, '14.11.03', '매출', '품목3', 3, 11031
UNION ALL
SELECT 4, '14.11.03', '매출', '품목1', 5, 11012
UNION ALL
SELECT 5, '14.11.03', '매출', '품목2', 5, 11000
UNION ALL
SELECT 6, '14.11.04', '매입', '품목2', 30, 11001
UNION ALL
SELECT 7, '14.11.04', '매입', '품목1', 100, 11012
UNION ALL
SELECT 8, '14.11.05', '매출', '품목1', 4, 11011
UNION ALL
SELECT 9, '14.11.06', '매출', '품목1', 3, 11012
UNION ALL
SELECT 10, '14.11.06', '매출', '품목2', 2, 11000
)
SELECT 고유번호
, SUM(ISNULL(CASE 구분 WHEN '매입' THEN 수량 END, 0)) AS 입고수량
, SUM(ISNULL(CASE 구분 WHEN '매출' THEN 수량 END, 0)) AS 출고수량
, SUM((ISNULL(CASE 구분 WHEN '매입' THEN 수량 END, 0)) - (ISNULL(CASE 구분 WHEN '매출' THEN 수량 END, 0))) AS [현재수량(입고-출고)]
FROM Tbl_Test
GROUP BY 고유번호
ORDER BY 고유번호
-- 결과2
WITH Tbl_Test(seq, 날짜, 구분, 품명, 수량, 고유번호)
AS
(
SELECT 1, '14.11.01', '매출', '품목1', 2, 11011
UNION ALL
SELECT 2, '14.11.01', '매입', '품목2', 10, 11000
UNION ALL
SELECT 3, '14.11.03', '매출', '품목3', 3, 11031
UNION ALL
SELECT 4, '14.11.03', '매출', '품목1', 5, 11012
UNION ALL
SELECT 5, '14.11.03', '매출', '품목2', 5, 11000
UNION ALL
SELECT 6, '14.11.04', '매입', '품목2', 30, 11001
UNION ALL
SELECT 7, '14.11.04', '매입', '품목1', 100, 11012
UNION ALL
SELECT 8, '14.11.05', '매출', '품목1', 4, 11011
UNION ALL
SELECT 9, '14.11.06', '매출', '품목1', 3, 11012
UNION ALL
SELECT 10, '14.11.06', '매출', '품목2', 2, 11000
)
SELECT 품명
, 고유번호
, SUM(ISNULL(CASE 구분 WHEN '매입' THEN 수량 END, 0)) AS 입고수량
, SUM(ISNULL(CASE 구분 WHEN '매출' THEN 수량 END, 0)) AS 출고수량
, SUM((ISNULL(CASE 구분 WHEN '매입' THEN 수량 END, 0)) - (ISNULL(CASE 구분 WHEN '매출' THEN 수량 END, 0))) AS [현재수량(입고-출고)]
FROM Tbl_Test
GROUP BY 품명, 고유번호
ORDER BY 품명, 고유번호