Consulta UNION, GROUP BY e COUNT na mesma query filtrando por intervalo de datas
05/09/2015
0
Olá pessoal,
Não estou conseguindo avançar na criação de uma query que possa ter UNION, GROUP BY e COUNT baseado em um periodo de data na mesma consulta. Para eu atingir meu objetivo, necessito das seguintes ações na mesma consulta:
1º) filtrar, agrupar e contar todos os pedidos de clientes em um determinado período
2º) filtrar e agrupar os clientes que não enviaram pedidos no mesmo período
3º) identificar os clientes que enviaram pedido com um status = ATIVO
4º) Identificar os clientes que NÃO enviaram pedido com um status = INATIVO
5º) Na minha query abaixo ainda falta colocar na claúsula WHERE o filtro por intervalo de datas que passarei através de parâmetro.
Agradeço antecipadamente a ajuda dos colegas para atingir esse objetivo.
Não estou conseguindo avançar na criação de uma query que possa ter UNION, GROUP BY e COUNT baseado em um periodo de data na mesma consulta. Para eu atingir meu objetivo, necessito das seguintes ações na mesma consulta:
1º) filtrar, agrupar e contar todos os pedidos de clientes em um determinado período
2º) filtrar e agrupar os clientes que não enviaram pedidos no mesmo período
3º) identificar os clientes que enviaram pedido com um status = ATIVO
4º) Identificar os clientes que NÃO enviaram pedido com um status = INATIVO
5º) Na minha query abaixo ainda falta colocar na claúsula WHERE o filtro por intervalo de datas que passarei através de parâmetro.
Agradeço antecipadamente a ajuda dos colegas para atingir esse objetivo.
select "Cliente"."Nome" as Conveniado, "Municipios"."Nome" as Cidade, "Estado"."Nome" as Estado, 'ATIVO' as status from ((((dbo.Pedidos prt inner join dbo.Cliente Cliente on (Cliente.Id = prt.ClienteId)) inner join dbo.Logradouro Logradouro on (Logradouro.Id = Cliente.Logradouro01Id)) inner join dbo.Municipios Municipios on (Municipios.Id = Logradouro.MunicipioId)) inner join dbo.Estado Estado on (Estado.Id = Municipios.EstadoId)) where (prt.Inativo = 0) UNION select Cliente.Nome as Conveniado, Municipios.Nome as Cidade, Estado.Nome as Estado, 'INATIVO' as status from ((((dbo.Pedidos prt inner join dbo.Cliente Cliente on (Cliente.Id = prt.ClienteId)) inner join dbo.Logradouro Logradouro on (Logradouro.Id = Cliente.Logradouro01Id)) inner join dbo.Municipios Municipios on (Municipios.Id = Logradouro.MunicipioId)) inner join dbo.Estado Estado on (Estado.Id = Municipios.EstadoId)) where ( ) // AQUI deverei implementar uma busca por intervalo de data, baseado no campo [prt.Cadastro], cujo os cliente AINDA NÃO fizeram pedidos no intervalo de datas
Hugo
Curtir tópico
+ 0
Responder
Post mais votado
09/09/2015
Fala Hugo, tranquilo? fiz so o 1º item, acho que ficaria +- assim, da um olho ai e me fala o que achou
select prt.Periodo, Cliente.Nome as Conveniado, Municipios.Nome as Cidade, Estado.Nome as Estado, 'ATIVO' as status, count(Cliente.Nome) QTD from dbo.Pedidos prt inner join dbo.Cliente Cliente on (Cliente.Id = prt.ClienteId) inner join dbo.Logradouro Logradouro on (Logradouro.Id = Cliente.Logradouro01Id) inner join dbo.Municipios Municipios on (Municipios.Id = Logradouro.MunicipioId) inner join dbo.Estado Estado on (Estado.Id = Municipios.EstadoId) where prt.Inativo = 0 and prt.Periodo between DataInicio and DataFim group by prt.Periodo, Cliente.Nome as Conveniado, Municipios.Nome as Cidade, Estado.Nome as Estado;
E aí Hector, tudo na paz?!
Muito obrigado pelo apoio, esse inicio de rotina irá me ajudar bastante.
Forte abraço
Hugo
Responder
Mais Posts
08/09/2015
Hector Figueroa
Fala Hugo, tranquilo? fiz so o 1º item, acho que ficaria +- assim, da um olho ai e me fala o que achou
select prt.Periodo, Cliente.Nome as Conveniado, Municipios.Nome as Cidade, Estado.Nome as Estado, 'ATIVO' as status, count(Cliente.Nome) QTD from dbo.Pedidos prt inner join dbo.Cliente Cliente on (Cliente.Id = prt.ClienteId) inner join dbo.Logradouro Logradouro on (Logradouro.Id = Cliente.Logradouro01Id) inner join dbo.Municipios Municipios on (Municipios.Id = Logradouro.MunicipioId) inner join dbo.Estado Estado on (Estado.Id = Municipios.EstadoId) where prt.Inativo = 0 and prt.Periodo between DataInicio and DataFim group by prt.Periodo, Cliente.Nome as Conveniado, Municipios.Nome as Cidade, Estado.Nome as Estado;
Responder
Clique aqui para fazer login e interagir na Comunidade :)