簡體   English   中英

使用case語句設置值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM