2014-04-16 2 views
1

나는 아래의 쿼리를 가지고 있으며, 각 섹션은 주식을 자세히 설명했다. 내가 원하는 것은 각각의 쿼리가 날짜에 대한 움직임을 설명하는 아래에 표시된대로 테이블을 갖는 것입니다.쿼리 합류

SELECT 
inventory.DSTAMP, 
inventory.NAME, 
inventory.WEIGHT AS KG_Weight, 
inventory.CODE 
FROM inventory 
WHERE inventory.code = 'In' 

UNION 

SELECT 
inventory.DSTAMP, 
inventory.NAME, 
inventory.WEIGHT AS KG_Weight, 
inventory.CODE 
FROM inventory 
WHERE inventory.code = 'Out' 

출력 할 수 있습니다 :이 작업을 수행 할 수있는 쉬운 방법이


╔═════════╦════════════╦═════════════╗ 
║ Date ║ In   ║ Out   ║ 
╠═════════╬════════════╬═════════════╣ 
║01/01/14 ║ 4500  ║ 7800  ║ 
║02/01/14 ║ 0   ║ 8500  ║ 
║03/01/14 ║ 8000  ║ 0   ║ 
╚═════════╩════════════╩═════════════╝ 

있습니까?

답변

1

조건부 집계를 사용할 수 있습니다

SELECT i.DSTAMP, i.NAME, 
     SUM(CASE WHENn i.CODE = 'IN' THEN i.WEIGHT END) as IN_KG_Weight, 
     SUM(CASE WHENn i.CODE = 'OUT' THEN i.WEIGHT END) as OUT_KG_Weight 
FROM inventory i 
WHERE i.code = 'In' 
GROUP BY i.DSTAMP, i.NAME; 

편집 : 단지 날짜별로 그룹이으로

가 :

SELECT to_char(i.DSTAMP, 'YYYY-MM-DD') as yyyymmdd, i.NAME, 
     SUM(CASE WHENn i.CODE = 'IN' THEN i.WEIGHT END) as IN_KG_Weight, 
     SUM(CASE WHENn i.CODE = 'OUT' THEN i.WEIGHT END) as OUT_KG_Weight 
FROM inventory i 
WHERE i.code = 'In' 
GROUP BY to_char(i.DSTAMP, 'YYYY-MM-DD'), i.NAME; 

이이 날짜 문자열로 값을 변환하는 주문에 좋습니다.

1
select DSTAMP, 
     sum(case when code = 'In' then WEIGHT else 0 end) as "In", 
     sum(case when code = 'Out' then WEIGHT else 0 end) as "Out" 
from inventory 
group by DSTAMP