tipos tablas outer natural left inner ejemplos sql tsql sql-server-2012

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