Выбрать несколько значений с помощью оператора CASE?

У меня есть таблица транспортных средств с полем 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"
7
задан anothershrubery 9 March 2011 в 09:55
поделиться