2013-05-29 54 views
0

postgresql,我有一張表my_table 4個表有列stxstxid,stxuserid sumamountstx,userid,amountcredit,quantitiesrc 我的目標是合併具有相同行的不同行將這些選定行的銷售額列彙總到合併行中時將stxstxid合併到一行中。作爲表達式使用的子查詢返回多個行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

相關問題