У меня есть таблица транспортных средств с полем Owner_ID в ней. Этот Owner_ID будет соответствовать либо полю ID в таблице Customer, либо полю ID в таблице Business. Я хочу вернуть разные значения в зависимости от таблицы, к которой принадлежит идентификатор.
У меня есть это утверждение:
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"