varios varias unir una tablas sola consultas consulta concatenar sql-server group-by inner-join

sql-server - consultas - unir varias tablas de access en una sola



uniĆ³n interna y grupo por (2)

Puede usar UNION ALL para seleccionar ambas tablas como una, ya que tienen la misma definición. Desde allí, puede anidarlos como una tabla derivada, y luego SUM en eso:

SELECT [Name], SUM(Qty) AS TotalQty FROM ( SELECT [Name], Qty FROM t1 UNION ALL SELECT [Name], Qty FROM t2 ) YourDerivedTable GROUP BY [Name]

Tengo dos tablas con definición idéntica.

T1: Name VARCHAR(50) Qty INT T2: Name VARCHAR(50) Qty INT

Esta es la información que tiene cada tabla:

T1: Name Qty a 1 b 2 c 3 d 4 T2: Name Qty a 1 b 3 e 5 f 10

Quiero tener un resultado que puede sumar la cantidad de ambas tablas basadas en Nombre.

Resultados esperados:

Name TotalQty a 2 b 5 c 3 d 4 e 5 f 10

Si hago unirme a la izquierda o unirme a la derecha, no me devolverá el nombre de ninguna de las tablas.

Lo que estoy pensando es crear una tabla temporal y agregar estos registros y solo hacer un agregado de SUMA en la columna Cantidad, pero creo que debería haber una mejor manera de hacerlo.

Así es como se ve mi consulta que no devuelve el resultado esperado:

SELECT t1.Name, ISNULL(SUM(t1.Qty + t2.Qty),0) TotalQty FROM t1 LEFT JOIN t2 ON t1.Name = T2.Name GROUP BY t1.Name

¿Puede alguien decirme por favor si la creación de una tabla temporal está bien aquí o hay una mejor manera de hacerlo?


Puedes usar una combinación externa completa:

SELECT ISNULL(t1.Name, t2.Name) AS Name, ISNULL(t1.Qty, 0) + ISNULL(t2.Qty, 0) AS TotalQty FROM t1 FULL JOIN t2 ON t1.Name = T2.Name

Véalo trabajar en línea: sqlfiddle