2013-05-29 2 views
0

postgresql, у меня есть таблица таблицы my_table 4 с столбцами stxstxid, stxuserid sumamountstx, userid, amountcredit, amountrc Моя цель - объединить разные строки, имеющие одинаковые 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

Смежные вопросы

 Смежные вопросы