Как добавить две колонки, но оставить строки не равными

Как я могу добавить два столбца (количество, количество2), если они имеют одинаковое значение в нескольких столбцах (Учетная запись, Учетная запись2), используя оператор UPDATE. Я хочу сохранить все строки, даже если Account <> Account 2. Также я хочу, чтобы они были только в двух столбцах Account и Amount. Я использую MS Access sql view.

Например: я хочу добавить столбцы Amount и Amount2, только если столбцы Account и Account 2 совпадают.

Я хочу, чтобы результат состоял только из двух столбцов: «Учетная запись» и сумма, которая была добавлена.

Account Amount Account2 Amount2
1234576  4      1234576    4
4444444  10     4564888    11
456789   2      456789      2
000000   1      1111111     6 

Как вы определяете значения суммы?

jarlh 10.08.2018 17:09

Когда номера счетов совпадают, добавьте их. Если они не равны, оставьте их. По сути, следует добавить любые повторяющиеся номера счетов, а остальные оставить.

Ben21 10.08.2018 17:10
update tablename set Amount2 = Amount where Account = Account2?
jarlh 10.08.2018 17:16

Привет, Ярл, это работает, но добавляет только равные значения, а не равные строки не отображаются в обновленной таблице.

Ben21 10.08.2018 17:26

Возможно, вы немного расскажете нам о контексте этого требования. Если честно, это звучит как вопрос на собеседовании или домашнем задании. Также может быть полезно предоставить примеры данных до и после операции (то есть показать, как они выглядят, и показать, как они должны выглядеть).

Brian A. Henning 10.08.2018 18:24
1
5
46
2

Ответы 2

Вот один из вариантов использования оператора iif:

select account, 
       amount + iif(account = account2, amount2, 0) as amount
from yourtable
(SELECT t1.Account as Acct, Sum(t1.Amount) as Amt1, first(t1.Account2) as Acct2, sum(t1.amount) as Amt2 
FROM test as t1
WHERE t1.Amount=t1.Amount2
GROUP BY t1.Account
ORDER BY t1.Account)

UNION

(SELECT t2.Account as Acct, sum(t2.Amount) as Amt1, first(t2.Account2) as Acct2, sum(t2.amount2) as Amt2
FROM test as t2
WHERE t2.Amount <> t2.Amount2
GROUP BY t2.account
ORDER BY t2.account)

если вы получили только половину ответа, тогда другая половина должна быть обратной. Присоединяйтесь к ним с СОЮЗОМ

geeFlo 10.08.2018 17:46

Спасибо, geeFlo. Будет ли это работать, если я хочу использовать ОБНОВЛЕНИЕ?

Ben21 10.08.2018 18:39

Хммм, никогда не пробовал ОБНОВЛЕНИЕ с СОЮЗОМ. Можно было бы подумать, что вы хотите обновить до вторичной таблицы, чтобы сохранить свою таблицу ввода.

geeFlo 10.08.2018 19:13

Другие вопросы по теме