У меня есть две таблицы:T-SQL обновление присоединиться 1: N
TABLE1:
id fee1 fee2
1 0.00 0.00
2 0.00 0.00
Table2:
id fee_no fee
1 A 10.00
1 B 20.00
2 A 80.00
2 B 90.00
SQL:
update a
set a.fee1 = isnull(a.fee1, 0)
+ (case when b.fee_no ='A'
then cast(isnull(b.fee, 0) as decimal(30, 2))
else 0 end),
a.fee2 = isnull(a.fee2, 0)
+ (case when b.fee_no ='B'
then cast(isnull(b.fee, 0) as decimal(30,2))
else 0 end)
from table1 a
inner join table2 b on a.id = b.id
После выполнения этого SQL обновляется только fee1
из table1
, а fee2
- нет. Наконец, я использовал два оператора SQL для обновления fee1
и fee2
соответственно.
Но почему этот оператор SQL не работает?
Вот создать таблицу заявление:
create table table1(
id int null,
fee1 dec(30,2) null,
fee2 dec(30,2) null
)
insert into table1 (id,fee1,fee2)
select 1,0,0 union
select 2,0,0
create table table2(
id int null,
fee_no varchar(10) null,
fee dec(30,2) null
)
insert into table2 (id,fee_no,fee)
select 1,'A',10 union
select 1,'B',20 union
select 2,'A',80 union
select 2,'B',90
Ваше обновление читает 'случай, когда B'' c.fee_no = 'но там нет псевдонима таблицы' c' назначен в запросе? – Raj
извините, это клерикальная ошибка. Я исправлю это – zhangsir199
Можете ли вы разместить свой SQL? Уверен, что второе обновление для 'fee2' обновило неверные значения – Raj