tablas - Cláusula T-SQL CASE: Problema al especificar WHEN NULL con un JOIN externo
tipos de join mysql (1)
Intenta usar ISNULL
Estoy bastante seguro de que la razón es porque cuando se compara IS NULL a NULL el resultado es NULL, por lo tanto False, por lo tanto, ¿por qué está evaluando a su ELSE 1?
SELECT c.customerID, o.OrderID, CASE When ISNULL(o.OrderID, 0) = 0 Then 0 Else
1 End as YesNO
FROM Customers c
LEFT JOIN Orders o
ON c.customerID = o.customerID
La siguiente consulta muestra correctamente el registro de todos los clientes actuales / potenciales independientemente de si el pedido fue realizado por él o ella. Pero el alias de YesNO
de la instrucción SELECT
continuación siempre retorna 1 incluso cuando en algunos casos o.OrderID
es nulo (es decir, cuando un cliente perspectiva no ha realizado un pedido). ¿Por qué? Creo que la declaración CASE a continuación es correcta (como se muestra en esta respuesta también). Estoy usando SQL Server 2012
. NOTA : tenga en cuenta que aunque OrderID es PK, siempre será nulo junto con todas las otras columnas de la tabla de órdenes en OUTER JOIN si la condición de unión no se cumple.
SELECT c.customerID, o.OrderID, CASE When o.OrderID is NULL Then 0 Else 1 End as YesNO
FROM Customers c
LEFT JOIN Orders o
ON c.customerID = o.customerID