É possível juntar os resultados de 2 SELECT
instruções sql em uma instrução? Eu tenho um banco de dados de tarefas em que cada registro é uma tarefa separada, com prazos (e a PALT
, que fica a apenas alguns INT
dias do início ao prazo. Age
Também é um INT
número de dias).
Quero ter uma tabela que contenha cada pessoa na tabela, o número de tarefas que eles têm e o número de LATE
tarefas que eles têm (se houver).
Eu posso obter esses dados em tabelas separadas facilmente, assim:
SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks
retornando dados como:
ks # Tasks
person1 7
person2 3
e então eu tenho:
SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks
que retorna:
ks # Late
person1 1
person2 1
E eu quero juntar os resultados dessas duas select
declarações (pelo KS
)
Estou tentando evitar o uso de uma tabela temporária, mas se essa for a única maneira prática de fazer isso, gostaria de saber mais sobre o uso de tabelas temporárias dessa maneira.
Eu também tentei fazer algum tipo de count()
linha que atenda a uma condição, mas também não consegui descobrir como fazer isso. Se for possível, isso também funcionaria.
Adenda: Desculpe, eu quero meus resultados para ter colunas para KS
, Tasks
eLate
KS # Tasks # Late
person1 7 1
person2 3 1
person3 2 0 (or null)
Além disso, quero que uma pessoa apareça mesmo que não tenha tarefas atrasadas.
SUM(CASE WHEN Age > Palt THEN 1 ELSE 0 END) Late
funciona bem, obrigado por esta resposta!
Duas instruções select também funcionam, usar a LEFT JOIN
para se juntar a elas também funciona, e agora eu entendo como unir vários select
s dessa maneira
Respostas:
fonte
Tente algo como isto:
fonte
Use
UNION
:Ou
UNION ALL
se você deseja duplicatas:fonte
Se Age e Palt forem colunas na mesma tabela, você poderá contar (*) todas as tarefas e somar apenas as mais atrasadas como esta:
fonte
você pode usar a
UNION ALL
palavra - chave para isso.Aqui está o documento do MSDN para fazer isso no T-SQL http://msdn.microsoft.com/en-us/library/ms180026.aspx
UNION ALL - combina o conjunto de resultados
UNION- Faz algo como um Set Union e não gera valores duplicados
Para a diferença com um exemplo: http://sql-plsql.blogspot.in/2010/05/difference-between-union-union-all.html
fonte