#sql
#sql
Вопрос:
У меня есть 3 таблицы
Таблица A:
Cid acc_id acc balance
1 345 100
1 456 300
2 347 500
Таблица B:
Cid acc_id acc balance
1 348 100
1 457 300
2 349 500
Таблица C:
Cid acc_id acc balance
1 340 100
1 457 300
2 344 500
Мне нужно создать единую таблицу, в которой указана сумма остатков для каждого клиента во всех 3 таблицах.
Cid. Balance
1. 1200
2. 1500
Для этой цели мне нужен SQL. Поскольку идентификатор клиента повторяется в таблице, я в замешательстве.
Комментарии:
1. Смотрите о ОБЪЕДИНЕНИИ.
2. Вы используете MySQL или Oracle?
3. Почему в результате нет cid = 3?
4. Разве баланс CID # 1 не должен составлять 300 долларов, а баланс CID # 2 — 900 долларов?
5. Ваши ожидаемые результаты не соответствуют вашему примеру ввода. Любая форма кодирования требует внимания к деталям. Просто убедившись, что вы правильно указали детали в своем вопросе, иногда вы можете приблизиться к ответу или намного ближе. Пожалуйста, отредактируйте свой вопрос и исправьте несоответствия и ошибки.
Ответ №1:
Использование union all
и агрегирование
select cid, sum(balance)
from ((select Cid, acc_id, balance
from a
) union all
(select Cid, acc_id, balance
from b
) union all
(select Cid, acc_id, balance
from c
)
) abc
group by cid;
Ответ №2:
Вы можете использовать UNION ALL
, как в:
select
cid,
sum(balance) as balance
from (
select * from table_a
union all
select * from table_b
union all
select * from table_c
) x
group by cid
Комментарии:
1. Мне также нужно суммировать внутри таблицы? Будет ли это достигнуто с помощью этого?
2. @akr Ты пробовал это?