Inquiridor
consulta sql

Pergunta
-
emp matr data irreg 2 1193 2013-05-29 17 2 1193 2013-05-31 18 2 1193 2013-06-04 17 2 1193 2013-06-04 18
Preciso de uma consulta que me traga apenas o dia 04/06 por ter a irreg 17 e 18 no mesmo dia. Os demais dias não preciso pq tem apenas a irreg 17 ou 18. Alguém pode me ajudar? Obrigado
Todas as Respostas
-
Boa tarde,
Eduardo, experimente mais ou menos dessa forma:
with CTE_D as ( select Emp, Matr, Data, count(case when irreg = 17 then 1 end) as Qtd17, count(case when irreg = 18 then 1 end) as Qtd18 from Tabela group Emp, Matr, Data ) select t.* from CTE_D as c inner join Tabela as t on t.Emp = c.Emp and t.Matr = c.Matr and t.Data = c.Data where c.Qtd17 > 0 and c.Qtd18 > 0
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
-
Obrigado Gapimex, mas acho que não fui claro....
Preciso que seja gerado na consulta apenas o dia 04/06, pois neste mesmo dia a irreg (cod irregularidade) mostra 17 e 18. Nos outros dias ou tem o 17 ou tem 18. Só quero quando tiver os dois (17 e 18) no mesmo dia...
Pode me ajudar?
Obrigado
-
Acredito que corrigindo o erro de sintaxe (faltou o By depois do Group) e adaptando o nome da tabela, o script que sugeri acima deveria apresentar o resultado esperado.
Experimente fazer um teste com o script abaixo:
declare @Tabela table (emp int, matr int, data date, irreg int); insert into @Tabela values (2, 1193, '2013-05-29', 17), (2, 1193, '2013-05-31', 18), (2, 1193, '2013-06-04', 17), (2, 1193, '2013-06-04', 18); with CTE_D as ( select Emp, Matr, Data, count(case when irreg = 17 then 1 end) as Qtd17, count(case when irreg = 18 then 1 end) as Qtd18 from @Tabela group by Emp, Matr, Data ) select t.* from CTE_D as c inner join @Tabela as t on t.Emp = c.Emp and t.Matr = c.Matr and t.Data = c.Data where c.Qtd17 > 0 and c.Qtd18 > 0
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Alexandre Matayosi quinta-feira, 6 de junho de 2013 20:45
-