none
select por hora q agrupe registros distintos no dia RRS feed

  • Pergunta

  • eu preciso de um select q agrupasse registros distintos no dia, mas quero saber a hora desses registros...

    daí, por causa disso, se eu agrupar por hora ele vai contar registros repetidos no mesmo dia....

     

    por ex:


    select COUNT(*) qtde, a.registro, convert(date,a.data,103) as data

    from (
    select registro,data from tabela where convert(date,data,103) = convert(date,'14/05/2015',103) group by registro,data
    ) a
    group by a.registro, convert(date,a.data,103)
     
    SE EU QUISER SABER A HORA É SÓ MUDAR O CONVERT PARA datetime...SÓ QUE ISSO CONTA OS REGISTROS REPETIDOS NO DIA
    quinta-feira, 14 de maio de 2015 19:10

Respostas

  • Experimente dessa forma:

    select 
        registro,
        convert(date, data, 103) as data,
        min(CONVERT(TIME, data , 103)) as hora
    from tabela 
    where 
        convert(date, data, 103) = convert(date, '14/05/2015', 103) 
    group by 
        registro,
        convert(date, data, 103)

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    • Sugerido como Resposta CeiltonLM quinta-feira, 14 de maio de 2015 20:39
    • Marcado como Resposta Eduardo.Romero sexta-feira, 15 de maio de 2015 13:35
    quinta-feira, 14 de maio de 2015 20:09

Todas as Respostas

  • Bom dia,

    Qual é o tipo de dados da coluna Data?

    Qual horário deve ser retornado se houverem várias linhas para um mesmo a.registro? Ou devem ser retornadas todas as linhas do dia?


    Assinatura: http://www.imoveisemexposicao.com.br

    quinta-feira, 14 de maio de 2015 19:17
  • obrigado pela resposta

    o campo data está como varchar...para trazer a hora eu to usando convert(varchar(5),data,108)

    a consulta retorna várias linhas (todos os horários do dia), mas para cada registro só pode ter um horário

    quinta-feira, 14 de maio de 2015 19:30
  • Se um registro tem cinco com ocorrências em um dia, cada ocorrência com uma datahora diferente, se você agrupa por dia, não tem como você saber a hora do agrupamento.

    Como o SQL vai escolher uma hora dos cinco registros para considerar a hora do grupo????


    • Editado CeiltonLM quinta-feira, 14 de maio de 2015 19:37
    quinta-feira, 14 de maio de 2015 19:37
  • se eu agrupar por data, beleza, funciona!

    select COUNT(*) qtde, a.registro, convert(date,a.data,103) as data

    from (
    select registro,data from tabela where convert(date,data,103) = convert(date,'14/05/2015',103) group by registro,data
    ) a
    group by a.registro, convert(date,a.data,103)

    mas se eu quiser saber a hora (invés de date usar datetime no convert), mesmo agrupando por data, repete os registros do dia...

    quinta-feira, 14 de maio de 2015 19:44
  • Supondo que existam 10 horários diferentes para o mesmo dia, qual deles deve ser retornado?



    Assinatura: http://www.imoveisemexposicao.com.br

    quinta-feira, 14 de maio de 2015 19:54
  • pode ser retornado o primeiro horário, se no dia houver 10 horários diferentes PARA O MESMO REGISTRO
    quinta-feira, 14 de maio de 2015 19:57
  • Experimente dessa forma:

    select 
        registro,
        convert(date, data, 103) as data,
        min(CONVERT(TIME, data , 103)) as hora
    from tabela 
    where 
        convert(date, data, 103) = convert(date, '14/05/2015', 103) 
    group by 
        registro,
        convert(date, data, 103)

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    • Sugerido como Resposta CeiltonLM quinta-feira, 14 de maio de 2015 20:39
    • Marcado como Resposta Eduardo.Romero sexta-feira, 15 de maio de 2015 13:35
    quinta-feira, 14 de maio de 2015 20:09
  • Então use MIN(data) para pegar o primeiro horário.

    • Sugerido como Resposta CeiltonLM quinta-feira, 14 de maio de 2015 20:38
    • Não Sugerido como Resposta CeiltonLM quinta-feira, 14 de maio de 2015 20:38
    quinta-feira, 14 de maio de 2015 20:12
  • cara...funcionou!!! muito obrigado!!! estou dias quebrando a cabeça nisso...quem manja, manja...pedi ajuda para um monte de gente, tem muito nego aí que se diz entendido e não entende nada...

    valeu mesmo!!!

    Abração

    quinta-feira, 14 de maio de 2015 20:37