Select para listar vendas com quebra por quinzena

20/06/2014

0

Boa tarde a todos

Eu conheço muito pouco sql e surgiu uma necessidade para mim

Preciso saber quanto vendeu de determinado produto em uma quinzena, e que o select liste mais de uma quinzena

Se fosse uma data só faria assim

select produto,sum(quantidade) AS QUINZENA1
from
vendas
where
dtvenda between '01/06/2014' and '15/06/2014'
group by produto

O resultado é assim

PRODUTO QUINZENA1
SAPATOX 30
SAPATOY 50

Eu preciso listar outras quinzenas, onde nessa quinzena ele não fizesse a conta do dtvenda entre '01/06/2014' até 15/06/2014' mas sim '16/06/2014' até '30/06/2014' por exemplo

O resultado seria assim

PRODUTO QUINZENA1 QUINZENA2
SAPATOX 30 40
SAPATOY 50 30


Dessa forma posso acompanhar o desempenho de um produto em uma faixa de tempo

Alguém poderia me ajudar como posso fazer isso?


Desde já agradeço

Abraço
Jorge Luiz

Jorge Luiz

Responder

Post mais votado

20/06/2014

Segue um exemplo...

select extract(year from dt.data_base) as ano,
         extract(month from dt.data_base) as mês,
         SUM(CASE 
              WHEN extract(day from dt.data_base) <= 15 THEN
                  fvn.vlvendanota
           END ) as primeira_quinzena,
        SUM(CASE 
              WHEN extract(day from dt.data_base) < 15 THEN
                  fvn.vlvendanota
           END ) as segunda_quinzena
from fato_vendanota fvn
join dim_tempo dt
on fvn.idtempo = dt.idtempo
where dt.data_base between '01/01/2014' and '31/05/2014'
group by extract(year from dt.data_base),
         extract(month from dt.data_base)
order by extract(year from dt.data_base),
         extract(month from dt.data_base)


Fiz isso usando o PostgreSQL, tenta adaptar o código...

Marisiana Battistella

Marisiana Battistella
Responder

Mais Posts

20/06/2014

Isaac Jose

boa tarde ja estou indo embora mais acho que esse ex pode ajudar

att

isaac

select
a.cou1,a.cou2 ,MAX(LIME_CHEQUE_Prod_63)LIME_CHEQUE_Prod_63,MAX(LIME_LIME_Prod_94)LIME_LIME_Prod_94
from (select

LIME_CHEQUE_Prod_63= case when b.tintCodCart = 63 then b.monVlrCart
end,
LIME_LIME_Prod_94 = case when b.tintCodCart = 94 then b.monVlrCart
end,
a.cou1 ,a.cou2
from tb1 a left join
tb2 b on
b.cou1 = a.AG and b.cou2 = a.cou2)a
group by a.cou1,a.cou2
Responder

22/06/2014

Marisiana Battistella

Jorge Luiz, vc conseguiu criar select?
Responder

24/06/2014

Jorge Luiz

Boa tarde a todos!

Primeiramente agradeço a ajuda de todos amigos

Marisiana muito obrigado mesmo!

Deu tudo certo, aprendi muito com sua dica

Com o extract eu não consegui fazer, eu uso o sql server 2005 e não sei se o extract não funciona nele

Então mudei os extract para as funções YEAR,MONTH e DAY e deu tudo certo, apenas troquei as tabelas e colunas pelas minhas aqui
Responder

24/06/2014

Marisiana Battistella

Por nada! Que bom que te ajudou! =D
Eu inclui o extract pra conseguir testar e utilizei a estrutura que tinha em mãos naquele momento... Imaginei que vc teria que adaptar o código, então recorri as funções mais tradicionais que geralmente rodam em todos os SGBDs...
Não conheço o SQLServer, então não sei te dizer se funciona o extract ou não, mas já vi algum conteúdo na web sobre isso... Talvez tenha alguma particularidade na sintaxe...
Responder

24/06/2014

Marisiana Battistella

Ah... Obrigada pelo feedback!
Responder

25/06/2014

Fabiano Carvalho

Extract não tem o sql server, pode-se usar datepart, ou month,day,year.
Responder

25/06/2014

Marisiana Battistella

Ah, é mesmo! Agora lembrei que uma vez pesquisei sobre isso e encontrei exemplos com o datepart.
Não uso o SQLServer, mas, se não me engano fui pesquisar pra tentar ajudar alguém aqui do fórum.. =)
Obrigada Fabiano!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar