[英]Set values using a case statement
表Rate
:
Fees | Region | Rate
-----+---------+---------
A1 | Intra | 0.00015
A2 | Intra | 0.000325
A3 | Inter | 0.000025
A4 | Inter | 0.015
表Amount
:
Region | Amount | A1 | A2 | A3 | A4
-------+--------+----+----+----+----
Intra | $10 | ? | ? | ? | ?
Intra | $11 | ? | ? | ? | ?
Inter | $12 | ? | ? | ? | ?
Inter | $13 | ? | ? | ? | ?
任何幫助都可以,我正在努力編寫case語句,以使用表1中的不同比率更新表。
我努力了:
Update a
set A.A1 = Amount * R.Rate
from dbo.Amount as A
inner join dbo.Rate R where R.Region = A.region
我希望應用的比率是比率A1,區域是內部/內部,具體取決於金額表中的區域
Update a
set A.A2 = Amount * R.Rate
from dbo.Amount as A
inner join dbo.Rate R where R.Region = A.region
我希望應用的比率是比率A2,而區域是內部/內部,具體取決於金額表中的區域)等
請幫忙
這是一種方法
Update a
set
A.A1 = Amount* R1.Rate
,A.A2 = Amount* R2.Rate
,A.A3 = Amount* R3.Rate
,A.A4 = Amount* R4.Rate
from dbo.Amount as A
inner join dbo.Rate R1
on R1.Region = A.region and r1.fees = 'A1'
inner join dbo.Rate R2
on R2.Region = A.region and r2.fees = 'A2'
inner join dbo.Rate R3
on R3.Region = A.region and r3.fees = 'A3'
inner join dbo.Rate R4
on R4.Region = A.region and r4.fees = 'A4'
我收集到的是您的表之間的關系。
update Amount
set
A1 = Amount * (select Rate from Rate where Region = Amount.Region and Fees = 'A1'),
A2 = Amount * (select Rate from Rate where Region = Amount.Region and Fees = 'A2'),
A3 = Amount * (select Rate from Rate where Region = Amount.Region and Fees = 'A3'),
A4 = Amount * (select Rate from Rate where Region = Amount.Region and Fees = 'A4')
使用子查詢的優點之一是,如果返回多個行,則會出現錯誤。 有理由避免update ... from ...
語法update ... from ...
。 根據示例數據,您似乎將具有null,因此,如果您選擇以這種方式使用,則將要使用outer join
而不是inner join
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.