Usuário com melhor resposta
ajuda em um sql com periodo

Pergunta
-
Boa tarde,
o meu problema é o seguinte:
preciso da quantidade de vezes que aparece um registro dentro de um periodo informado
segue um exemplo para esclarecer:
select cod_a, nome, sobrenome from tabela_c where data between @data_inicial and @data_final
já tentei com o count.. mas nao estou sabendo usá-lo...
obrigado
Respostas
-
Deleted
- Sugerido como Resposta Giovani Cr sexta-feira, 11 de abril de 2014 19:28
- Marcado como Resposta Giovani Cr terça-feira, 15 de abril de 2014 13:56
quinta-feira, 10 de abril de 2014 09:55 -
é assim...
tenho estes dados (exemplo)
cod nome data_inicial data_final 1 jose 01/12/2012 05/12/2012 2 jose 02/12/2012 06/12/2012 3 jose 03/12/2012 07/12/2012 4 fulano 22/12/2012 25/12/2012 5 fulano 23/12/2012 25/12/2012 quero que apareça assim
nome contador jose 3 fulano 2 o problema é que preciso dessa data_inicial, preciso exibir ela e nao tem como colocar ela no group by pqw ela é diferente.
eis outro problema.. preciso dessa coluna e por ser diferente nao posso usar no group by... como faço para agrupar dados diferentes? nao tem como né?
Hawk B,
Baseado neste resultado, tente executar a consulta abaixo:
select nome, count(nome) as contador, from tabela_c where data between @data_inicial and @data_final group by nome
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA | MCSA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Sugerido como Resposta Giovani Cr sexta-feira, 11 de abril de 2014 19:28
- Marcado como Resposta Giovani Cr terça-feira, 15 de abril de 2014 13:56
-
Hawk B,
Veja se este exemplo ajuda:
Create Table Valores (Codigo Int Primary Key Identity(1,1), Nome Varchar(20), DTInicio Date, DTFim Date) Go Insert Into Valores Values('jose','2012-12-01','2012-12-05'), ('jose','2012-02-12','2012-12-06'), ('jose','2012-12-03','2012-12-07'), ('fulano','2012-12-22','2012-12-25'), ('fulano','2012-12-23','2012-12-25') ;With CTE_Contador_Nomes (Nome, Contador) As ( Select Nome, Count(Nome) from Valores Where DTInicio >='2012-12-02' And DTInicio <= '2012-12-25' Group By Nome) Select CTE.Nome, CTE.Contador, Min(V.DTInicio) DTInicio, Max(V.DTFim) DTFim From CTE_Contador_Nomes CTE Inner Join Valores V On CTE.Nome = V.Nome Group By CTE.Nome, CTE.Contador
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
- Editado Junior Galvão - MVPMVP sexta-feira, 11 de abril de 2014 18:26
- Sugerido como Resposta Giovani Cr sexta-feira, 11 de abril de 2014 19:28
- Marcado como Resposta Giovani Cr terça-feira, 15 de abril de 2014 13:56
-
eu agradeço a resposta de voces pessoal.. mas consegui resolver colocando uma subquery...
obrigado pessoal
- Marcado como Resposta Giovani Cr terça-feira, 15 de abril de 2014 13:56
Todas as Respostas
-
Boa tarde,
Experimente dessa forma:
select cod_a, nome, sobrenome, count(*) as Qtde from tabela_c where data between @data_inicial and @data_final group by cod_a, nome, sobrenome
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
-
Hawk_B,
Tente utilizar a consulta abaixo:
select count(*) as Qtde from tabela_c where data between @data_inicial and @data_final
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA | MCSA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil" -
-
Hawk, você pode postar um exemplo de como ficou o resultado da query que sugeri e como gostaria que ficasse?
Assinatura: http://www.imoveisemexposicao.com.br
-
é assim...
tenho estes dados (exemplo)
cod nome data_inicial data_final 1 jose 01/12/2012 05/12/2012 2 jose 02/12/2012 06/12/2012 3 jose 03/12/2012 07/12/2012 4 fulano 22/12/2012 25/12/2012 5 fulano 23/12/2012 25/12/2012 quero que apareça assim
nome contador jose 3 fulano 2 o problema é que preciso dessa data_inicial, preciso exibir ela e nao tem como colocar ela no group by pqw ela é diferente.
eis outro problema.. preciso dessa coluna e por ser diferente nao posso usar no group by... como faço para agrupar dados diferentes? nao tem como né?
- Editado Hawk B quarta-feira, 9 de abril de 2014 20:09
-
Experimente remover a coluna cod_a da query:
select nome, sobrenome, count(*) as Qtde from tabela_c where data between @data_inicial and @data_final group by nome, sobrenome
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
-
-
Desculpe mas não entendi... não consegui identificar nenhuma linha repetida no exemplo que você postou.
Acho melhor você postar outro exemplo e o respectivo resultado exatamente como você espera.
Assinatura: http://www.imoveisemexposicao.com.br
-
-
Você fez um teste com essa última query que sugeri? Ela não apresentou o resultado esperado? Faltou alguma coisa?
Assinatura: http://www.imoveisemexposicao.com.br
-
é assim...
tenho estes dados (exemplo)
cod nome data_inicial data_final 1 jose 01/12/2012 05/12/2012 2 jose 02/12/2012 06/12/2012 3 jose 03/12/2012 07/12/2012 4 fulano 22/12/2012 25/12/2012 5 fulano 23/12/2012 25/12/2012 quero que apareça assim
nome contador jose 3 fulano 2 o problema é que preciso dessa data_inicial, preciso exibir ela e nao tem como colocar ela no group by pqw ela é diferente.
eis outro problema.. preciso dessa coluna e por ser diferente nao posso usar no group by... como faço para agrupar dados diferentes? nao tem como né?
Hawk B,
Baseado neste resultado, tente executar a consulta abaixo:
select nome, count(nome) as contador, from tabela_c where data between @data_inicial and @data_final group by nome
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA | MCSA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Sugerido como Resposta Giovani Cr sexta-feira, 11 de abril de 2014 19:28
- Marcado como Resposta Giovani Cr terça-feira, 15 de abril de 2014 13:56
-
Hawk B,
Veja se este exemplo ajuda:
Create Table Valores (Codigo Int Primary Key Identity(1,1), Nome Varchar(20), DTInicio Date, DTFim Date) Go Insert Into Valores Values('jose','2012-12-01','2012-12-05'), ('jose','2012-02-12','2012-12-06'), ('jose','2012-12-03','2012-12-07'), ('fulano','2012-12-22','2012-12-25'), ('fulano','2012-12-23','2012-12-25') ;With CTE_Contador_Nomes (Nome, Contador) As ( Select Nome, Count(Nome) from Valores Where DTInicio >='2012-12-02' And DTInicio <= '2012-12-25' Group By Nome) Select CTE.Nome, CTE.Contador, Min(V.DTInicio) DTInicio, Max(V.DTFim) DTFim From CTE_Contador_Nomes CTE Inner Join Valores V On CTE.Nome = V.Nome Group By CTE.Nome, CTE.Contador
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
- Editado Junior Galvão - MVPMVP sexta-feira, 11 de abril de 2014 18:26
- Sugerido como Resposta Giovani Cr sexta-feira, 11 de abril de 2014 19:28
- Marcado como Resposta Giovani Cr terça-feira, 15 de abril de 2014 13:56
-
eu agradeço a resposta de voces pessoal.. mas consegui resolver colocando uma subquery...
obrigado pessoal
- Marcado como Resposta Giovani Cr terça-feira, 15 de abril de 2014 13:56