none
Como faço pro order by desta query funcionar? RRS feed

  • Pergunta

  • Como faço pro order by desta query funcionar?

     

    select

    convert(varchar, a.pedido_registro, 103) as Data,

    sum(case when DateDiff(mi, a.pedido_registro, c.acao_pedido_data) < 120 then 1 else 0 end) as 'Ate_2h',

    sum(case when DateDiff(mi, a.pedido_registro, c.acao_pedido_data) >= 120

    and DateDiff(mi, a.pedido_registro, c.acao_pedido_data) < 240 then 1 else 0 end) 'de2_4h',

    sum(case when DateDiff(mi, a.pedido_registro, c.acao_pedido_data) >= 240

    and DateDiff(mi, a.pedido_registro, c.acao_pedido_data) < 360 then 1 else 0 end) 'de4_6h',

    sum(case when DateDiff(mi, a.pedido_registro, c.acao_pedido_data) >= 360

    and DateDiff(mi, a.pedido_registro, c.acao_pedido_data) < 480 then 1 else 0 end) 'de6_8h',

    sum(case when DateDiff(mi, a.pedido_registro, c.acao_pedido_data) >= 480

    and DateDiff(mi, a.pedido_registro, c.acao_pedido_data) < 1440 then 1 else 0 end) 'de8_24h',

    sum(case when DateDiff(mi, a.pedido_registro, c.acao_pedido_data) >= 1440

    and DateDiff(mi, a.pedido_registro, c.acao_pedido_data) < 2880 then 1 else 0 end) 'de24_48h',

    sum(case when DateDiff(mi, a.pedido_registro, c.acao_pedido_data) >= 2880 then 1 else 0 end) 'acima_de_48h',

    count(0) Total_dia,

    max(DateDiff(mi, a.pedido_registro, c.acao_pedido_data)) Maior_tempo_do_dia,

    avg(DateDiff(mi, a.pedido_registro, c.acao_pedido_data)) Media_diaria

    from Pedidos (nolock) a

    inner join FilasItens (nolock) b on b.pedido_id = a.pedido_id

    inner join AcoesPedidos (nolock) c on c.pedido_id = a.pedido_id

    where

    a.entidade_id = 100204

    and a.pedido_registro > '2008-08-01 00:00:00' --possível parametrizacao

    and b.fila_item_id = (select max(aux.fila_item_id) from FilasItens(nolock) aux where aux.pedido_id = a.pedido_id)

    and c.pedido_status_id = 9 --possível seleção de status

    group by

    convert(varchar, a.pedido_registro, 103)

    order by

    convert(varchar, a.pedido_registro, 103)

     

    quinta-feira, 4 de setembro de 2008 14:18

Respostas

  • Bom Dia,

     

    Tente da seguinte forma:

     

    Code Snippet

    with consulta as (

    select

    convert(varchar, a.pedido_registro, 103) as Data,

    sum(case when DateDiff(mi, a.pedido_registro, c.acao_pedido_data) < 120 then 1 else 0 end) as 'Ate_2h',

    sum(case when DateDiff(mi, a.pedido_registro, c.acao_pedido_data) >= 120

    and DateDiff(mi, a.pedido_registro, c.acao_pedido_data) < 240 then 1 else 0 end) 'de2_4h',

    sum(case when DateDiff(mi, a.pedido_registro, c.acao_pedido_data) >= 240

    and DateDiff(mi, a.pedido_registro, c.acao_pedido_data) < 360 then 1 else 0 end) 'de4_6h',

    sum(case when DateDiff(mi, a.pedido_registro, c.acao_pedido_data) >= 360

    and DateDiff(mi, a.pedido_registro, c.acao_pedido_data) < 480 then 1 else 0 end) 'de6_8h',

    sum(case when DateDiff(mi, a.pedido_registro, c.acao_pedido_data) >= 480

    and DateDiff(mi, a.pedido_registro, c.acao_pedido_data) < 1440 then 1 else 0 end) 'de8_24h',

    sum(case when DateDiff(mi, a.pedido_registro, c.acao_pedido_data) >= 1440

    and DateDiff(mi, a.pedido_registro, c.acao_pedido_data) < 2880 then 1 else 0 end) 'de24_48h',

    sum(case when DateDiff(mi, a.pedido_registro, c.acao_pedido_data) >= 2880 then 1 else 0 end) 'acima_de_48h',

    count(0) Total_dia,

    max(DateDiff(mi, a.pedido_registro, c.acao_pedido_data)) Maior_tempo_do_dia,

    avg(DateDiff(mi, a.pedido_registro, c.acao_pedido_data)) Media_diaria

    from Pedidos (nolock) a

    inner join FilasItens (nolock) b on b.pedido_id = a.pedido_id

    inner join AcoesPedidos (nolock) c on c.pedido_id = a.pedido_id

    where

    a.entidade_id = 100204

    and a.pedido_registro > '2008-08-01 00:00:00' --possível parametrizacao

    and b.fila_item_id = (select max(aux.fila_item_id) from FilasItens(nolock) aux where aux.pedido_id = a.pedido_id)

    and c.pedido_status_id = 9 --possível seleção de status

    group by

    convert(varchar, a.pedido_registro, 103))

    select Data, Ate_2h, de2_4h, de4_6h, de6_8h, de8_24h, de24_48h, acima_de_48h

    from consulta

    order by CAST(Data AS SMALLDATETIME)

     

     

    [ ]s,

     

    Gustavo

     

    • Marcado como Resposta nnelsson segunda-feira, 6 de abril de 2009 20:46
    sexta-feira, 5 de setembro de 2008 14:54

Todas as Respostas

  • Bom Dia,

     

    Por que o Order By supostamente não está funcionando ?

    Sua consulta está sintaticamente correta e a princípio não há nada de errado.

     

    Seu SQL Server é 2005 ?

     

    [ ]s,

     

    Gustavo

    quinta-feira, 4 de setembro de 2008 14:31
  • está me retornando da seguinte forma:

     

    01/01/2008

    01/02/2008

    01/03/2008

    02/01/2008

    03/01/2008

     

    Ordenando somente pelos dias pois eu converti para varchar, e não ordena pela data como no exemplo confundindo os meses.

     

    quinta-feira, 4 de setembro de 2008 14:39
  • Nelsson,

     

    Mas você deseja fazer o order by por data?

     

    quinta-feira, 4 de setembro de 2008 16:28
  • sim! eu tenho que fazer o order by pela data.

     

    quinta-feira, 4 de setembro de 2008 16:49
  • Nelson,

     

    Mas porque você esta convertendo?

     

    quinta-feira, 4 de setembro de 2008 16:52
  • para funcionar o group by!

     

    quinta-feira, 4 de setembro de 2008 18:01
  • Nelson,

     

    O que eu quero saber qual é a necessidade de fazer a conversão?

     

    Qual foi o motivo de converter tanto no Group by como também no Order By.

     

    quinta-feira, 4 de setembro de 2008 18:06
  • quando eu não faço a conversão ele não faz o agrupamento, por que os horarios são diferentes

     

    quinta-feira, 4 de setembro de 2008 18:40
  • Olá Nelson,

     

    Pergunto novamente. Seu SQL Server é 2005 ?

     

    [ ]s,

     

    Gustavo

     

    quinta-feira, 4 de setembro de 2008 22:23
  • é!

     

    sexta-feira, 5 de setembro de 2008 13:36
  • Bom Dia,

     

    Tente da seguinte forma:

     

    Code Snippet

    with consulta as (

    select

    convert(varchar, a.pedido_registro, 103) as Data,

    sum(case when DateDiff(mi, a.pedido_registro, c.acao_pedido_data) < 120 then 1 else 0 end) as 'Ate_2h',

    sum(case when DateDiff(mi, a.pedido_registro, c.acao_pedido_data) >= 120

    and DateDiff(mi, a.pedido_registro, c.acao_pedido_data) < 240 then 1 else 0 end) 'de2_4h',

    sum(case when DateDiff(mi, a.pedido_registro, c.acao_pedido_data) >= 240

    and DateDiff(mi, a.pedido_registro, c.acao_pedido_data) < 360 then 1 else 0 end) 'de4_6h',

    sum(case when DateDiff(mi, a.pedido_registro, c.acao_pedido_data) >= 360

    and DateDiff(mi, a.pedido_registro, c.acao_pedido_data) < 480 then 1 else 0 end) 'de6_8h',

    sum(case when DateDiff(mi, a.pedido_registro, c.acao_pedido_data) >= 480

    and DateDiff(mi, a.pedido_registro, c.acao_pedido_data) < 1440 then 1 else 0 end) 'de8_24h',

    sum(case when DateDiff(mi, a.pedido_registro, c.acao_pedido_data) >= 1440

    and DateDiff(mi, a.pedido_registro, c.acao_pedido_data) < 2880 then 1 else 0 end) 'de24_48h',

    sum(case when DateDiff(mi, a.pedido_registro, c.acao_pedido_data) >= 2880 then 1 else 0 end) 'acima_de_48h',

    count(0) Total_dia,

    max(DateDiff(mi, a.pedido_registro, c.acao_pedido_data)) Maior_tempo_do_dia,

    avg(DateDiff(mi, a.pedido_registro, c.acao_pedido_data)) Media_diaria

    from Pedidos (nolock) a

    inner join FilasItens (nolock) b on b.pedido_id = a.pedido_id

    inner join AcoesPedidos (nolock) c on c.pedido_id = a.pedido_id

    where

    a.entidade_id = 100204

    and a.pedido_registro > '2008-08-01 00:00:00' --possível parametrizacao

    and b.fila_item_id = (select max(aux.fila_item_id) from FilasItens(nolock) aux where aux.pedido_id = a.pedido_id)

    and c.pedido_status_id = 9 --possível seleção de status

    group by

    convert(varchar, a.pedido_registro, 103))

    select Data, Ate_2h, de2_4h, de4_6h, de6_8h, de8_24h, de24_48h, acima_de_48h

    from consulta

    order by CAST(Data AS SMALLDATETIME)

     

     

    [ ]s,

     

    Gustavo

     

    • Marcado como Resposta nnelsson segunda-feira, 6 de abril de 2009 20:46
    sexta-feira, 5 de setembro de 2008 14:54