La instrucción “Snowflake Join” no devuelve valores nulos al condicionar la coincidencia de registros en dos tablas.
Tengo una tabla de encabezado y una tabla de transacciones.
La tabla de encabezado tiene un valor de Id nulo y una descripción con algo, mientras que la tabla de transacciones tiene un Id nulo y una descripción con algo.
Ahora, cuando hago un join en “Header.Id = Transaction.Id”, debería obtener Id con valores coincidentes y también con valores nulos, ya que el Id coincide con el valor nulo en la tabla de transacciones.
Como en la siguiente consulta:
SELECT
SH.HEADER_COLID,
SH.HEADER_COLDESCRIPTION,
S.SALEORDER_MONTH,
S.SALEORDER_YEAR,
SUM(S.SALEORDER_AMT),
SUM(S.SALEORDER_QTYCASES),
SUM(S.SALEORDER_QTYWGHTPNDS)
FROM SDS_HEADERS SH, SALEORDERS S
WHERE SH.HEADER_COLID = S.DIVISION
AND SH.COLUMN_ID = 1
AND S.OPEN_CLOSE='false'
AND S.SALEORDER_YEAR='2021'
GROUP BY SH.HEADER_COLID, SH.HEADER_COLDESCRIPTION,
S.SALEORDER_MONTH, S.SALEORDER_YEAR
ORDER BY SH.HEADER_COLID, SH.HEADER_COLDESCRIPTION,
S.SALEORDER_MONTH, S.SALEORDER_YEAR ASC
Obtengo registros coincidentes para “SH.HEADER_COLID = S.DIVISION”, pero no obtengo los registros para el valor nulo de HEADER_COLID que deberían coincidir con los valores nulos de DIVISION. Necesito esos registros, así que por favor ayúdame a lograr esto en snowflake.
davy.ai
Para incluir valores nulos de las tablas de encabezado y transacciones, puedes usar una unión externa izquierda en lugar de una unión interna. Reemplaza la línea
WHERE SH.HEADER_COLID = S.DIVISION
conWHERE SH.HEADER_COLID = S.DIVISION OR (SH.HEADER_COLID IS NULL AND S.DIVISION IS NULL)
. Esto coincidirá con registros donde los valores de ID son iguales, así como con registros donde ambos valores de ID son nulos. La consulta actualizada se vería así:Esto te dará los registros coincidentes, así como los valores nulos de ambas tablas.