Ir para conteúdo

Arquivado

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

Gildo Sousa

Sql

Recommended Posts

Ola Pessoal!!

 

Sou Novato e preciso de ajuda com um SQL

preciso gerar um relatorio que compare 2 periodos diferentes, ja fiz um codigo com um period, mas com o segundo nao estou conseguindo.

codigo:

SELECT

a.cc_ficha as Codigo,

b.cd_nome as Cliente,
a.cc_cod_vend as Vendedor,
c.ci_nome as Cidade,
sum(a.cc_doc_vlr) as TOT_P1, /* total periodo 1 */
count(a.cc_ficha) as QTD_P1 /* quantidade de vendas periodo 1 */
FROM TABELA_MOVIMENTOS a
inner join TABELA_CLIENTE b on (a.cc_ficha=b.cd_cod_cad)
inner join TABELA_CIDADE c on (a.cc_cod_cid=c.ci_cod)
WHERE
a.cc_cod_vend="22" and
a.cc_cod_cid="9" or a.cc_cod_cid="11" and
a.cc_dat_lan >="01/01/2013" and a.cc_dat_lan <="07/31/2013"
GROUP BY
a.cc_ficha,a.cc_cod_vend,b.cd_nome, a.cc_cod_cid,c.ci_nome
ORDER BY
c.ci_nome,total desc
RESULTADO:
cod NOME VENDEDOR CIDADE TOTP1 QTD_P1
200 FULANO_DE_TAL VENDEDOR1 SAO_PAULO 20.000,00 30
210 FULANINHO VENDEDOR1 SAO_PAULO 20.000,00 30
220 FULANAO VENDEDOR1 SAO_PAULO 20.000,00 30
230 JOSE FULANO VENDEDOR1 SAO_PAULO 20.000,00 30
RESULTADO QUE EU PRECISA ERA:
cod NOME VENDEDOR CIDADE TOT_P1 QTD_P1 TOT_P2 QTD_P2
200 FULANO_DE_TAL VENDEDOR1 SAO_PAULO 20.000,00 30 10.000,00 25
210 FULANINHO VENDEDOR1 SAO_PAULO 20.000,00 30 10.000,00 23
220 FULANAO VENDEDOR1 SAO_PAULO 20.000,00 30 11.000,00 21
230 JOSE FULANO VENDEDOR1 SAO_PAULO 20.000,00 30 12.000,00 20
se alguem souber como fazer este sql eu agradeço!!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que "entra" nas colunas "1" e nas colunas "2" ?

 

Creio que a solução seria um UNION para obter os dois tipos de totais, e depois pivotear estas colunas

por meio de um CASE um de um PIVOT

 

Exemplo simplificado

 

 

--separando

select status,nome,sum(valor) valor
from tabela
where status = '1'
group by nome
union
select status,nome,sum(valor) valor
from tabela
where status = '2'
group by nome

--pivot


select nome,
       sum(case when status = '1' then valor else 0 end) valor_1,
       sum(case when status = '2' then valor else 0 end) valor_2
from
(
select status,nome,sum(valor) valor
from tabela
where status = '1'
group by nome
union
select status,nome,sum(valor) valor
from tabela
where status = '2'
group by nome
) virtual
group by nome

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola, Motta!! obrigado por tentar resolver meu problema, coluna 1 = código do cliente e a coluna 2= nome cliente, eu gostaria de fazer uma analise das compras deste cliente com 2 período diferente, analisando o valor e a quantidade de compras feitas, pois são clientes fixos que compram a anos.

 

obrigado!

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.