alekozely Postado Setembro 13, 2009 Denunciar Share Postado Setembro 13, 2009 (editado) Table PedidosData--------------------------------------Vendas 2009-05-01 00:00:00-------------------2002009-05-26 00:00:00-------------------133 2009-06-05 00:00:00-------------------25 2009-01-30 00:00:00-------------------13Preciso trazer os dados da seguinte maneirames 01 = 13mes 02 = 0mes 03 = 0mes 04 = 0mes 05 = 333mes 06 = 0mes 07 = 0mes 08 = 0mes 09 = 0mes 10 = 0mes 11 = 0mes 12 = 0SELECT Data, VendasFrom PedidosGroup 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êsMuito OBRIGADO! Editado Setembro 13, 2009 por alekozely Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Setembro 14, 2009 Denunciar Share Postado Setembro 14, 2009 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 dadosinsert 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 intset @Cont = 1while @Cont < 13Begin if @cont not in (select mes from #MesesVendas) insert into #MesesVendas (Mes, Vendas) values (@Cont, 0) Set @Cont = @Cont + 1Endselect * from #MesesVendas order by Mes Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
alekozely
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 alekozelyLink para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
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.