Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Programdor2008

Criar View por mes

Recommended Posts

Olá Pessoal estou precisando criar uma view conforme um exemplo abaixo será q é possivel?

 

mes6 | mes7 | mes8 | vendedor

 

46,00 | 29,00 | 13,00 | João

32,00 | 11,00 | 9,00 | Carlos

43,00 | 25,00 | 67,00 | Pedro

 

 

PS. Tenho uma tabela com o campo data (yyyy-mm-dd) e o valor da venda em cada dia...

Compartilhar este post


Link para o post
Compartilhar em outros sites

use o case, algo assim

 

create or replace view vendas_ano_vendedor

select vendedor,

sum(case when extract month from data = '01' than valor else 0 end) jan,

sum(case when extract month from data = '02 than valor else 0 end) fev

...

from tabela

where extract month from data = extract month from sysdate

group by vendedor

 

 

 

Só não estou certo da sintexe pois as funcoes de extração de data no Oracle são diferentes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que é

 

Extract(Month From Data)

 

Não sei se a função que pega a data do sistema é sysdate

Compartilhar este post


Link para o post
Compartilhar em outros sites

no mysql, pode usar o MONTH(data). a data do sistema é CURRENT_DATE() só data, ou o NOW() data/hora.

tem aqui uma relação das funções de data/hora http://dev.mysql.com/doc/refman/5.0/en/dat...-functions.html.

 

Caso tenha de utilizar Case, eis um lugar onde pode tirar o que precisa: http://dev.mysql.com/doc/refman/5.0/en/case-statement.html

 

tem também o IF http://dev.mysql.com/doc/refman/5.0/en/if-statement.html

 

no caso de usar o IF, seria algo do tipo:

 

select vendedor,

sum(if(month(data) = 1, valor,0 end)) jan,

sum(if(month(data) = 2, valor,0 end)) fev,

...

from tabela

where month(data) = month(CURRENT_DATE())

group by vendedor

 

a consulta é bem na estrutura que o motta passou, dá uma olhada p/ nestas documentações.

 

qquer dúvida só postar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara na prática a consulta fica assim:

select vendedor,

sum(if(month(data) = 1, valor,0 )) jan,

sum(if(month(data) = 2, valor,0 )) fev,

sum(if(month(data) = 3, valor,0 )) mar,

sum(if(month(data) = 4, valor,0 )) abr,

sum(if(month(data) = 5, valor,0 )) mai,

sum(if(month(data) = 6, valor,0 )) jun,

sum(if(month(data) = 7, valor,0 )) jul,

sum(if(month(data) = 8, valor,0 )) ago,

sum(if(month(data) = 9, valor,0 )) set,

sum(if(month(data) = 10, valor,0 )) out,

sum(if(month(data) = 11, valor,0 )) nov,

sum(if(month(data) = 12, valor,0 )) dez

from tabela

where

vendedor = codigo_do_vendedor

group by vendedor

claro que os nomes dos campos e os filtros (where) você tem que adaptar para a sua necessidade.

 

caso ainda não tenha criado view no mysql, veja este link: http://dev.mysql.com/doc/refman/5.0/en/create-view.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, pelo menos no mysql o máximo que pode acontecer é que o campo referente ao mês que não teve, é que o valor seja NULL (ou na melhor das hipóteses 0(zero)).

agora erro, tipo erro de sintaxe, não...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.