0

postgresql、列stxstxid、stxuserid sumamountstx、userid、amountcredit、amountrcを持つテーブルmy_table 4テーブルがあります私の目標は、同じstxstxidを持つ異なる行を1つの行にマージし、これらの選択した行の売上列をマージされた行。

例えば

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

私はいくつかの調査を行いましたが、自己結合は、私が取得することになっているものと同様のことを行うことになっていることがわかりました。

4

1 に答える 1

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でサンプル データを提供していただければ、テストできます。

于 2013-05-29T12:05:27.433 に答える