판매 테이블이 다음과 같이 있습니다.
물건 세금발행 금액
-------------------------
A 발행 20,000
B 미발행 15,000
C 미발행 20,000
A 발행 10,000
D 발행 20,000
이럴때 다음과 같은 검색을 할려고 합니다.
물건 발행 미발행 총금액
----------------------------------
A 발행 30,000
B 미발행 15,000
C 미발행 20,000
D 발행 10,000
E 발행 2 0,000
세금발행 필드의 경우 발행 또는 미발행의 값만 저장될수 있습니다.
디비로는 인터베이스를 사용하고 있는데
UNION ALL을 사용하니까 세금발행 필드 하나에 발행 미발행 값만 들어오더라구요.
자세한 방법좀 알려주세요.
그럼 수고하세요..
Union All을 사용 하셨다면
SELECT 물건, 세금발행, 금액 From 판매테이블
where 세금발행 = '발행'
union all
SELECT 물건, 세금발행, 금액 From 판매테이블
where 세금발행 = '미발행';
이렇게 쿼릴 하신걸로 추정돼네요. 이결과를 보면
물건 세금발행 금액
-------------------------
A 발행 20,000
A 발행 10,000
D 발행 20,000
+
물건 세금발행 금액
-------------------------
B 미발행 15,000
C 미발행 20,000
=
물건 세금발행 금액
-------------------------
A 발행 20,000
A 발행 10,000
D 발행 20,000
B 미발행 15,000
C 미발행 20,000
이런 결과가 나오네요 세금발행 필드를 발행과 미발행으로 분리해야 합니다.
union all 을 사용해서 하신다면 다음과 같이 해보세요
세금발행 필드를 발행, 미발행 필드명으로 분리하여 쿼리합니다.
SELECT 물건, 세금발행 as 발행, '' as 미발행, 금액 From 판매테이블
where 세금발행 = '발행'
union all
SELECT 물건, '' AS 발행, 세금발행 AS 미발행, 금액 From 판매테이블
where 세금발행 = '미발행'
물건 발행 미발행 금액
------------------------------------------
A 발행 20,000
A 발행 10,000
D 발행 20,000
+
물건 발행 미발행 금액
------------------------------------------
B 미발행 15,000
C 미발행 20,000
=
물건 발행 미발행 금액
------------------------------------------
A 발행 20,000
A 발행 10,000
D 발행 20,000
B 미발행 15,000
C 미발행 20,000
다른 방법으로는 오라클은 Decode 문장으로, MS-Sql 은 Case 문장으로 UNION ALL 을 사용하지 않고
쿼리를 할수 있습니다. 인터베이스는 사용해본적이 없어서 제공하는지를 잘 모르겠네요.
참고사항으로 적어봤습니다.
<오라클>
SELECT 물건, DECODE(세금발행,'발행',세금발행,NULL) 발행,
DECODE(세금발행,'미발행',세금발행,NULL) 미발행, 금액
From 판매테이블
DECODE(세금발행, '발행' , 세금발행 , NULL )
---------------------------------------------------------------
세금발행 필드의 데이타가 '발행' 일경우 참이면 세금발행필드의 데이타를 가져오고,
거짓이면 NULL 을 리턴합니다.
<ms-sql>
SELECT 물건, CASE 세금발행 WHEN '발행' THEN 세금발행 END AS 발행,
CASE 세금발행 WHEN '미발행' THEN 세금발행 END AS 미발행, 금액
From 판매테이블
금액 합산 group by추가로 가능하시겠죠?
테스트까진 못해보았고, 기억이 나는데로 작성해봤습니다.
도움돼셨기를....