У меня есть одна таблица с поддельными индивидуальными налоговыми записями, например, так (одна строка для каждого заполнителя):
T1:
+-------+---------+---------+
| Person| Spouse | Income |
+-------+---------+---------+
| 1 | 2 | 34000 |
| 2 | 1 | 10000 |
| 3 | NULL | 97000 |
| 4 | 6 | 11000 |
| 5 | NULL | 25000 |
| 6 | 4 | 100000 |
+-------+---------+---------+
У меня есть вторая таблица, в которой есть налоговые «семьи», один человек или семейная пара (одна строка на налог «семья»).
T1_Family:
+-------- -+-------+---------+
| Family_id| Person| Spouse |
+-------- -+-------+---------+
| 2 | 2 | 1 |
| 3 | 3 | NULL |
| 5 | 5 | NULL |
| 6 | 6 | 4 |
+------ ---+-------+---------+
Семья = макс (человек) в паре
Идея объединения этих двух заключается, например, в сумме доход 2 человек в одной налоговой семье (в совокупности на уровне семьи).
Итак, я попробовал следующее:
select *
into family_table
from
(
(select * from T1_family)a
join
(select * from T1)b
on a.family = b.person **or a.spouse = b.person**
)
where family_id is not null and person is not null
Что я должен получить (и я получаю когда я выбираю 1 случайную пару) - это одна строка на человека, где я могу затем сгруппировать по family_id и сумме дохода, пенсионных взносов и т. д. c. НО SQL тайм-ауты, прежде чем таблицы могут быть объединены. Часть, выделенная жирным шрифтом, - это то, что замедляет процесс, но я не уверен, что еще делать.
Есть ли более простой способ группировки по семье?