¿Es posible unir los resultados de 2 SELECT
declaraciones sql en una declaración? Tengo una base de datos de tareas donde cada registro es una tarea separada, con fechas límite (y una PALT
, que es solo INT
de días desde el inicio hasta la fecha límite. Age
También es un INT
número de días).
Quiero tener una tabla que tenga a cada persona en la tabla, la cantidad de tareas que tienen y la cantidad de LATE
tareas que tienen (si corresponde).
Puedo obtener estos datos en tablas separadas fácilmente, así:
SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks
devolviendo datos como:
ks # Tasks
person1 7
person2 3
y luego tengo:
SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks
que devuelve:
ks # Late
person1 1
person2 1
Y quiero unir los resultados de estas dos select
declaraciones (por el KS
)
Estoy tratando de evitar el uso de una tabla temporal, pero si esa es la única forma práctica de hacerlo, me gustaría saber más sobre el uso de tablas temporales de esta manera.
También intenté hacer algún tipo de count()
filas que satisfagan un condicional, pero tampoco pude encontrar la manera de hacerlo. Si es posible, eso también funcionaría.
Adición: Lo siento, yo quiero que mis resultados tengan columnas de KS
, Tasks
yLate
KS # Tasks # Late
person1 7 1
person2 3 1
person3 2 0 (or null)
Además, quiero que aparezca una persona incluso si no tienen tareas tardías.
SUM(CASE WHEN Age > Palt THEN 1 ELSE 0 END) Late
funciona bien, gracias por esta respuesta!
Dos sentencias select también funcionan, usar un LEFT JOIN
para unirlas también funciona, y ahora entiendo cómo unir múltiples select
s de esta manera
Respuestas:
fuente
Intenta algo como esto:
fuente
Uso
UNION
:O
UNION ALL
si quieres duplicados:fuente
Si Age y Palt son columnas en la misma tabla, puede contar (*) todas las tareas y sumar solo las últimas como esta:
fuente
puedes usar la
UNION ALL
palabra clave para esto.Aquí está el documento de MSDN para hacerlo en T-SQL http://msdn.microsoft.com/en-us/library/ms180026.aspx
UNION ALL: combina el conjunto de resultados
UNIÓN: hace algo así como establecer una unión y no genera valores duplicados
Para la diferencia con un ejemplo: http://sql-plsql.blogspot.in/2010/05/difference-between-union-union-all.html
fuente