Вычисление суммы поля на основе других столбцов таблицы соединения - PullRequest
0 голосов
/ 31 марта 2019

Я работаю над 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

Мне нужен новый столбец в результатекоторый суммирует amount_paid на основе значения field4 (если они совпадают).

Вышеприведенный запрос возвращается, как показано ниже:

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

Любые предложения здесь полезны, пожалуйста.

1 Ответ

1 голос
/ 31 марта 2019

Кажется, вы просто хотите:

Select . . .
       COALESCE(SUM(d.paid_amt) OVER (PARTITION BY c.field04), 0)  as amount_paid 
...