Ir para conteúdo
Fórum Script Brasil
  • 0

Consulta para trazer dados por MES


alekozely

Pergunta

Table Pedidos

Data--------------------------------------Vendas

2009-05-01 00:00:00-------------------200

2009-05-26 00:00:00-------------------133

2009-06-05 00:00:00-------------------25

2009-01-30 00:00:00-------------------13

Preciso trazer os dados da seguinte maneira

mes 01 = 13

mes 02 = 0

mes 03 = 0

mes 04 = 0

mes 05 = 333

mes 06 = 0

mes 07 = 0

mes 08 = 0

mes 09 = 0

mes 10 = 0

mes 11 = 0

mes 12 = 0

SELECT Data,

Vendas

From Pedidos

Group by month(Data)

Eu preciso que mesmo que não possua registros para os meses 02, 03, etc, na consulta me traga como ZERO. Seria para montar um gráfico, por isso a necessidade da consulta ordenada mês a mês

Muito OBRIGADO!

Editado por alekozely
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Bom dia Amigo!

No select q está querendo fazer, não tem como você colocar os meses faltantes sem q eles não apareçam na tabela onde se encontra as datas... o interessante seria você tratar estar informações no próprio código. você passaria as informações que possuía e no fonte acrescentaria as faltantes.

Mas pelo sql dá pra fazer também!!!

você terá q criar uma temporária e acrescentar os meses faltantes. Abaixo segue o script.

Outra coisa: no script coloquei 12 meses, sem levar em consideração o ano (uma vez q você seleciona apenas o mês). Espero q ajude!!! :.)

-- Criação de temporária contendo as datas q passou, com as vendas.

create table #teste (Data datetime, Vendas int)

-- inserção dos dados

insert into #teste (data, vendas) values ('2009-05-01', 200)

insert into #teste (data, vendas) values ('2009-05-26', 133)

insert into #teste (data, vendas) values ('2009-06-05', 25)

insert into #teste (data, vendas) values ('2009-01-30', 13)

--select * from #teste

-- Resultado esperado, mas apenas com os meses encontrados na tabela.

SELECT month(Data), sum(vendas) from #teste group by month(Data)

-- Criação de temporária para inserção de todos os meses.

Create table #MesesVendas (Mes int, Vendas int)

insert into #MesesVendas (Mes, Vendas)

SELECT month(Data), sum(vendas) from #teste group by month(Data)

-- loop pra preencher os meses com zero.

declare @Cont int

set @Cont = 1

while @Cont < 13

Begin

if @cont not in (select mes from #MesesVendas)

insert into #MesesVendas (Mes, Vendas) values (@Cont, 0)

Set @Cont = @Cont + 1

End

select * from #MesesVendas order by Mes

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...