У меня есть следующие таблицы:
Payments
payment_id amount tax_bill_nr fk_person_id payment_type ...
Person
person_id name address ...
Remission
remission_id tax_bill_nr fk_person_id taxing_year ...
Remission_State
fk_remission_id created_on ...
У меня уже есть огромный запрос на Remissions, который объединяет все виды данных из других таблиц. На самом деле это более 300 строк (да, модель базы данных отстой ...), но все остальные данные не имеют отношения к моей текущей проблеме. В настоящее время запрос выполняется следующим образом:
SELECT *
FROM (SELECT remission_id,
tax_bill_nr,
...,
row_number() OVER (PARITION BY rr.remission_id ORDER BY rs.created_on) rn
FROM Remission r
LEFT JOIN Remission_State rs ON rs.fk_remission_id = r.remission_id
LEFT JOIN ...
ORDER BY taxing_year, remission_id
) WHERE rn = 1;
Я создал отдельный запрос, который получает сумму платежей, сгруппированных по tax_bill_nr
. Этот разделенный запрос также получит данные tax_bill_number
и Person:
SELECT DISTINCT temp.tax_bill_nr,
pers.person_id,
temp.amount_sum AS total_amount
FROM (SELECT p.tax_bill_number, sum(p.amount) AS amount_sum
FROM Payments p
WHERE p.payment_type = 6 -- Remission_Payment
GROUP BY p.tax_bill_nr) temp
LEFT JOIN Payments p2 ON temp.tax_bill_nr = p2.tax_bill_number
LEFT JOIN Person pers ON pers.person_id = p2.fk_person_id;
Я хочу объединить два запроса. Или, если быть более точным, добавьте total_amount
к выводу первого запроса, связав сумму Remission и Payments на tax_bill_nr
.
Из-за конструкции SUM
и GROUP BY
, Я не уверен, как это сделать, хотя. Я пытался с подзапросом, но затем я получаю ошибки, такие как отсутствует правильная скобка , слишком много значений , и другие синтаксические ошибки crypti c (что означает, что что-то не так, но Oracle не знает точно, что) ..
Вышеприведенные запросы Oracle SQL (и, если это уместно, сервер баз данных Oracle использует версию 12).