Tengo dos tablas (Tabla A y Tabla B).
Estos tienen un número diferente de columnas: digamos que la Tabla A tiene más columnas.
¿Cómo puedo unir estas dos tablas y obtener nulos para las columnas que no tiene la Tabla B?
Agregue columnas adicionales como nulas para la tabla que tiene menos columnas como
Select Col1, Col2, Col3, Col4, Col5 from Table1
Union
Select Col1, Col2, Col3, Null as Col4, Null as Col5 from Table2
Select Col1, Col2, Col3, Null as Col4, Null as Col5 from Table2
, también se puede hacerSelect *, Null as Col4, Null as Col5 from Table2
,.Vine aquí y seguí la respuesta anterior. Pero la falta de coincidencia en el orden del tipo de datos provocó un error. La siguiente descripción de otra respuesta será útil.
¿Los resultados anteriores son los mismos que la secuencia de columnas en su tabla? porque Oracle es estricto en el orden de las columnas. este ejemplo a continuación produce un error:
ORA-01790: la expresión debe tener el mismo tipo de datos que la expresión correspondiente
Como puede ver, la causa raíz del error está en el orden de las columnas que no coinciden, lo que implica el uso de * como especificador de lista de columnas. Este tipo de errores se pueden evitar fácilmente ingresando la lista de columnas explícitamente:
seleccione col_a, col_b, col_c de test1_1790 unión todos seleccione col_a, col_b, col_c de test2_1790; Un escenario más frecuente para este error es cuando inadvertidamente intercambias (o desplazas) dos o más columnas en la lista SELECT:
O si lo anterior no resuelve su problema, ¿qué tal crear un ALIAS en las columnas como esta: (la consulta no es la misma que la suya, pero el punto aquí es cómo agregar un alias en la columna).
fuente
Normalmente, debe tener el mismo número de columnas cuando utiliza operadores basados en conjuntos para que la respuesta de Kangkan sea correcta.
SAS SQL tiene un operador específico para manejar ese escenario:
Por:
U-SQL admite un concepto similar:
Y codigo:
EDITAR:
El concepto de unión externa es compatible con KQL :
Ejemplo:
Salida:
manifestación
fuente
si solo hay 1 fila, puede usar unirse
fuente