Sql 基于其他联接表列计算字段的总和
我正在处理一个SQL查询,如下所示:Sql 基于其他联接表列计算字段的总和,sql,postgresql,join,left-join,right-join,Sql,Postgresql,Join,Left Join,Right Join,我正在处理一个SQL查询,如下所示: Select a.field1, b.field2, c.field3, c.field4, b.filed5, a.field6, COALESCE(SUM(d.paid_amt) OVER (PARTITION BY a.some_column), 0) as amount_paid from a inner join b on a.field1 = b.field1
Select
a.field1,
b.field2,
c.field3,
c.field4,
b.filed5,
a.field6,
COALESCE(SUM(d.paid_amt) OVER (PARTITION BY a.some_column), 0) as amount_paid
from
a
inner join
b on a.field1 = b.field1
right join
c on b.field2 = c.field3
left join
d on d.filed3 = a.field1 and d.field8 = a.field3
where
some conditions;
field1 | field2 | field3 | field4 | field5 | field6 | amount_paid
-------+--------+--------+--------+--------+--------+-------------
name | value1 | other1 | 1 | diff | new | 100
name1 | value2 | other2 | 1 | diff1 | new1 | 100
name2 | value3 | other3 | 2 | diff2 | new2 | 100
上面的输出如下所示:
Select
a.field1,
b.field2,
c.field3,
c.field4,
b.filed5,
a.field6,
COALESCE(SUM(d.paid_amt) OVER (PARTITION BY a.some_column), 0) as amount_paid
from
a
inner join
b on a.field1 = b.field1
right join
c on b.field2 = c.field3
left join
d on d.filed3 = a.field1 and d.field8 = a.field3
where
some conditions;
field1 | field2 | field3 | field4 | field5 | field6 | amount_paid
-------+--------+--------+--------+--------+--------+-------------
name | value1 | other1 | 1 | diff | new | 100
name1 | value2 | other2 | 1 | diff1 | new1 | 100
name2 | value3 | other3 | 2 | diff2 | new2 | 100
我需要在结果中添加一个新列,根据字段4
值(如果它们相同)对支付的金额
求和
上面的查询返回如下所示:
field1 | field2 | field3 | field4 | field5 | field6 | amount_paid
-------+--------+--------+--------+--------+--------+-------------
name | value1 | other1 | 1 | diff | new | 200
some | value3 | other3 | 2 | diff2 | new2 | 200
field1 | field2 | field3 | field4 | field5 | field6 | amount_paid
-------+--------+--------+--------+--------+--------+-------------
name | value1 | other1 | 1 | diff | new | 200
some | value3 | other3 | 2 | diff2 | new2 | 100
但预期结果如下:
field1 | field2 | field3 | field4 | field5 | field6 | amount_paid
-------+--------+--------+--------+--------+--------+-------------
name | value1 | other1 | 1 | diff | new | 200
some | value3 | other3 | 2 | diff2 | new2 | 200
field1 | field2 | field3 | field4 | field5 | field6 | amount_paid
-------+--------+--------+--------+--------+--------+-------------
name | value1 | other1 | 1 | diff | new | 200
some | value3 | other3 | 2 | diff2 | new2 | 100
任何建议都会对您有所帮助。您似乎只是想:
Select . . .
COALESCE(SUM(d.paid_amt) OVER (PARTITION BY c.field04), 0) as amount_paid
你的帖子令人困惑。您提到了一个
字段7
,结果中没有该字段。然后显示两个结果,但只有一个查询。一般来说,如果一个问题只显示了一个错误的查询和错误的输出,那么理解它并没有什么帮助。请编辑您的问题,并将表格的CREATE TABLE
语句以及表格样本数据的INSERT-INTO
语句以及该样本数据的预期结果包括在内。@stickybit抱歉,我已更新了问题。field7指的是金额,实际上我刚刚看到了这一点,我已经从不同的线程应用了相同的内容:)感谢您的回复:)