es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , ,

Answer

  1. Avatar for 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 con WHERE 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í:

    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
    LEFT OUTER JOIN SALEORDERS S ON SH.HEADER_COLID = S.DIVISION
    WHERE 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
    

    Esto te dará los registros coincidentes, así como los valores nulos de ambas tablas.

Comments are closed.