在SQL中,CASE WHEN
語句允許你根據(jù)一個或多個條件執(zhí)行不同的操作。這對于數(shù)據(jù)的動態(tài)轉(zhuǎn)換非常有用。以下是如何使用CASE WHEN
來實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的一些基本步驟和示例:
CASE WHEN
語句。每個CASE WHEN
語句都會檢查一個條件,并在條件為真時(shí)返回一個值。CASE WHEN
語句或者多個IF...ELSE
語句。CASE WHEN
語句應(yīng)用到你的查詢中,以便對數(shù)據(jù)進(jìn)行轉(zhuǎn)換。假設(shè)我們有一個名為orders
的表,其中包含訂單信息,包括訂單ID、客戶ID、訂單金額和訂單日期。我們想要將訂單金額轉(zhuǎn)換為美元和本地貨幣的形式,具體取決于客戶所在的地區(qū)。
-- 假設(shè)我們有一個名為'currency_rates'的表,其中包含匯率信息
-- currency_rates表有'currency_id'(貨幣ID)、'usd_to_local_rate'(美元到本地貨幣的匯率)等列
SELECT
o.order_id,
o.customer_id,
CASE
WHEN cr.currency_id = 'USD' THEN o.order_amount * cr.usd_to_local_rate
ELSE o.order_amount
END AS order_amount_in_usd,
CASE
WHEN cr.currency_id = 'USD' THEN o.order_amount
ELSE o.order_amount / cr.usd_to_local_rate
END AS order_amount_in_local_currency
FROM
orders o
JOIN
currency_rates cr ON o.currency_id = cr.currency_id;
在這個示例中,我們使用了兩個CASE WHEN
語句來根據(jù)currency_id
列的值轉(zhuǎn)換訂單金額。如果currency_id
是’USD’,則金額保持不變;否則,金額會根據(jù)匯率轉(zhuǎn)換為本地貨幣。
注意:這個示例假設(shè)你已經(jīng)有一個包含匯率信息的currency_rates
表,并且orders
表中有一個currency_id
列來標(biāo)識訂單使用的貨幣。你可能需要根據(jù)你的實(shí)際數(shù)據(jù)庫結(jié)構(gòu)進(jìn)行調(diào)整。