2013-05-29 4 views
0

postgresql로 사용되는 하위 쿼리에 의해 반환 된 행이 두 개 이상인 경우 stxstxid, stxuserid sumamountstx, userid, amountcredit, quantitiescs가있는 테이블 my_table 4 테이블이 있습니다. 내 목표는 동일한 행을 병합하는 것입니다. stxstxid를 선택한 행의 판매 열을 합쳐 병합 된 행으로 합계하면서 한 행에 저장합니다. 예를postgresql postgresql

stx        stxitem  
stxid stxuserid    stxid amountstx 
-------------------   ----------------------- 
001   A     001   20 
002   B     002   12 
002   B     002   200 
003   C     003   360 
003   C     003   400 
004   D     004   300 
004   D     004   450 
004   D     004   100 
005   E     005   800 
005   E     005   950 
005   E     005   800 
005   E     005   600 

srcitem   
srcid userid soueceid amountsrc 
------------------------------------ 
A0001 src001 001  20 
A0002 src002 002  212 
A0003 src003 003  500 
A0004 src004 004  800 


credit  
creditID  stxid  amountcredit 
--------------------------------------- 
9X0001  001   0 
9X0002  002   0 
9X0003  003  60 
9X0004  004  50 
9X0005  005  3150 

를 들어

내가 생각하고있는 무슨이

결과

stxid stxuserid sumamountstx userid amountcredit amountsrc 
--------------------------------------------------------------------------- 
003   C   760  src003  60    500 
005   E   3150     3150 
나는 몇 가지 조사를했다

을 얻을, 나는 자기가 비슷한 일을 어떻게해야 조인 것을 발견 내가 얻으려고하는 것.

+0

'stx (stxid)','stxitem (stxid)'및'credit (stxid)'사이의 관계를 봅니다. 'srcitem'에는'stxid' 컬럼이 없지만'srcitem' 컬럼은 출력에 필요합니다. 응? 'srcitem.souceid' 컬럼이 다른 테이블의 키라고 가정해야할까요? –

답변

1
select 
a.stxid, 
a.stxuserid, 
x.sumamountstx, 
s.userid, 
s.amountsrc 
from 
(select stxid, stxuserid from stx group by stxid, stxuserid) a 
join (select stxid, sum(amountstx) sumamountstx from stxitem group by stxid) x using (stxid) 
join credit using (stxid) 
left join srcitem s on (a.stxid = s.souceid) 

확실하지 않습니다. sqlfiddle에 대한 샘플 데이터를 제공하고 테스트 할 수 있습니다.

+0

twn08 감사합니다. 그러나 stxitem은 합계가 아닙니다. – user2431581

+0

죄송합니다, 무슨 뜻인지 이해가 안됩니다. 'stxitem'은 테이블이고 내 쿼리에는'sum (stxitem.amountstx)'가 있습니다. sqlfiddle에서 샘플 데이터를 제공하십시오. –

+0

하지만 시도하십시오. 나중에 총 비용을 찾습니다. – user2431581