sql >> Base de Datos >  >> RDS >> Sqlserver

Declaración condicional JOIN SQL Server

Creo que lo que estás pidiendo funcionará uniéndote al Inicial tabla a ambos Option_A y Opción_B usando LEFT JOIN , que producirá algo como esto:

Initial LEFT JOIN Option_A LEFT JOIN NULL
OR
Initial LEFT JOIN NULL LEFT JOIN Option_B

Código de ejemplo:

SELECT i.*, COALESCE(a.id, b.id) as Option_Id, COALESCE(a.name, b.name) as Option_Name
FROM Initial_Table i
LEFT JOIN Option_A_Table a ON a.initial_id = i.id AND i.special_value = 1234
LEFT JOIN Option_B_Table b ON b.initial_id = i.id AND i.special_value <> 1234

Una vez que haya hecho esto, 'ignorará' el conjunto de NULLS. El truco adicional aquí está en la línea SELECCIONAR, donde debe decidir qué hacer con los campos NULL. Si las tablas Option_A y Option_B son similares, puede usar COALESCE función para devolver el primer valor NON NULL (como en el ejemplo).

La otra opción es que simplemente tendrá que listar los campos Option_A y Option_B, y dejar que lo que esté usando el ResultSet para manejar la determinación de qué campos usar.