Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 基于其他联接表列计算字段的总和_Sql_Postgresql_Join_Left Join_Right Join - Fatal编程技术网

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

我正在处理一个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 
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指的是金额,实际上我刚刚看到了这一点,我已经从不同的线程应用了相同的内容:)感谢您的回复:)