我有一個車輛表,其中有一個Owner_ID字段。此Owner_ID將對應於Customer表中的ID字段或Business表中的ID字段。我正在尋找返回不同的值,這取決於ID所屬的表。通過CASE語句選擇多個值?
我有這樣的說法:
SELECT v.Make, v.Model
FROM Vehicle v
LEFT JOIN Customer c ON c.ID = v.Owner_ID
LEFT JOIN Business b ON b.ID = v.Owner_ID
所以說我想返回客戶的姓氏,如果Owner_ID = Customer.ID,如果Owner_ID = Business_ID的企業名稱。我知道我可以使用CASE
語句,例如:
SELECT v.Make, v.Model,
CASE WHEN c.ID IS NOT NULL THEN c.Surname
WHEN b.ID IS NOT NULL THEN b.Name
但是,有沒有辦法從一個case語句獲取多個值嗎?喜歡的東西:(我知道這是順便說完全錯誤的)
SELECT v.Make, v.Model,
CASE WHEN c.ID IS NOT NULL THEN
SELECT c.Surname, c.Date_Of_Birth
WHEN b.ID IS NOT NULL THEN
SELECT b.Name, b.Founded
否則我將不得不這樣做:
SELECT v.Make, v.Model,
CASE WHEN c.ID IS NOT NULL THEN c.Surname
WHEN b.ID IS NOT NULL THEN b.Name
END AS "Name",
CASE WHEN c.ID IS NOT NULL THEN c.Date_Of_Birth
WHEN b.ID IS NOT NULL THEN b.Founded
END AS "DOB/Founded"
是的,我可以,但我離開了其他一些零零碎碎,使得這一個沒有去,我可以嵌套的'COALESCE'語句做到這一點,但我認爲爲了便於閱讀,我會堅持使用'CASE'。 – anothershrubery 2011-03-09 12:53:02