Tengo una tabla de vehículo con un campo Owner_ID en ella. Este Owner_ID se corresponderá con el campo ID en una tabla Customer o con el campo ID en una tabla Business. Estoy buscando devolver diferentes valores según la tabla a la que pertenece el ID.¿Seleccionar valores múltiples a través de la declaración CASE?
que tienen esta declaración:
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
Así que digo que quiero volver al apellido del cliente si el OWNER_ID = Customer.ID, y el nombre de la empresa si OWNER_ID = business_id. Sé que puedo utilizar la instrucción CASE
como tal:
SELECT v.Make, v.Model,
CASE WHEN c.ID IS NOT NULL THEN c.Surname
WHEN b.ID IS NOT NULL THEN b.Name
Pero hay una manera de obtener múltiples valores de una declaración de caso? Algo así como: (. Sé que esto es totalmente erróneo, por cierto)
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
O voy a tener que hacer:
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"
Sí que pude, pero me he dejado algunas otras partes y piezas que hacen de este un no ir, podría hacerlo con declaraciones COALESCE' anidados 'pero creo Me quedaré con 'CASE' para fines de legibilidad. – anothershrubery