postgresql,我有一个表my_table 4表,其中包含列stxstxid,stxuserid sumamountstx,userid,amountcredit,amountrc 我的目标是将具有相同stxstxid的不同行合并为一行,同时将这些选定行的sales列合并到合并行中。
例如
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 :(得分: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的样本数据,我们可以测试。