Resultado da soma em duas colunas

22/09/2015

0

Galera,



Estou precisando muito de uma ajuda. Para uma tabela com as informações abaixo:

Lojacod, Codpro, qtdpro
1, 15, 10
1, 20, 5
1, 15, 2
2, 20, 3
2, 15, 5
2, 20, 15



Como posso ter o resultado a seguir do total de produto por loja? Tem a soma total das duas, mas esta parte esta fácil. O que não estou conseguindo é colocar uma loja por coluna com a soma nesta coluna.

Codpro. | Loja1. | Loja2 |. Total
15. 12. 5. 17
20. 5. 18. 23

Valeu.
Fernando

Fernando

Responder

Posts

22/09/2015

Isaac Jose

se entendi direitro isso deve ajudar
att.Isaac



select loja, codprod, sum(qtdprod) produto from tb
group by loja,codprod
order by loja , codprod
Responder

22/09/2015

Fernando

Olá Isaac

Dessa forma que passou funciona, mas não da forma que preciso.

O seu resultado apareceria assim:

loja, cod, soma
1 , 1 , 11
1 , 2 , 7
1 , 3 , 5
2, 1 , 3
2, 2, 12
2, 3 , 6


O que preciso, seria:

cod, loja1, loja2
1 11 3
2 7 12
3 5 6

Pois a idéia seria que eu conseguisse observar e comparar as quantidades entre as lojas.

Vi em algum lugar algo como abaixo, mas não funcionou

select PRO2.PROCOD, (SELECT PRO2.PROCOD, SUM(PRO2.PROQTEST) FROM PRO2 where PRO2.LOJCOD = 1 GROUP BY PRO2.PROCOD) loja1,
(SELECT PRO2.PROCOD, SUM(PRO2.PROQTEST) FROM PRO2 where PRO2.LOJCOD = 2 GROUP BY PRO2.PROCOD) loja2 FROM PRO2

Alguma idéia de como fazer isso pessoal?
Responder

23/09/2015

Isaac Jose

bom dia tente fazer com o pivot , unpivot vide exemplo.

no codigo abaixo tenho a coluna codloja, pf,pj, total transformei em codloja,tipo_pessoa,meta.

obs se for somente essas duas lojas faça com case when..

drop table producao.Tb_MetasPFPJ_Dia_loja
go
SELECT codloja, Tipo_Pessoa, Meta
Into producao.Tb_MetasPFPJ_Dia_loja
FROM
(SELECT DISTINCT
A.codloja,
[PF] = CASE WHEN A.PF IS NOT NULL THEN a.PF END,
[PJ] = CASE WHEN A.PJ IS NOT NULL THEN a.PJ END

from producao.Tb_Metaag_PFPJ A) P
UNPIVOT
(Meta FOR Tipo_Pessoa IN ([PF], [PJ])
) AS UNPVT

GO
Responder

25/09/2015

Fernando

Olá Isaac,


Quase deu certo, porém acabou retornando um item por linha por loja e as outras colunas ficaram nulas, veja o resultado:

procod lojcod1 lojcod2 lojcod3
13185 NULL NULL 0
13185 NULL 10 NULL
13185 0 NULL NULL
13186 NULL NULL 0
13186 NULL 2 NULL
13186 2 NULL NULL
13187 NULL NULL 0
13187 NULL 0 NULL
13187 2 NULL NULL

Usei o código abaixo

select distinct pro2.procod,
LOJCOD1 = case when PRO2.LOJCOD = 1 then SUM(PRO2.PROQTEST)
end,
LOJCOD2 = case when PRO2.LOJCOD = 2 then SUM(PRO2.PROQTEST)
end,
LOJCOD3 = case when PRO2.LOJCOD = 3 then SUM(PRO2.PROQTEST)
end
from pro2

group by pro2.procod, pro2.lojcod

order by pro2.procod



Como faria agora para colocar na mesma linha? Tentei algumas coisas aqui mas sem sucesso.

Alguém sabe como seria?
Responder

25/09/2015

Isaac Jose

vc nao precisa agrupar a loja.

monte um codigo de create e de insert de uma pequena quantidade que tento fazer para vc.

abraço.
Responder

25/09/2015

Isaac Jose

vc nao precisa agrupar a loja.

monte um codigo de create e de insert de uma pequena quantidade que tento fazer para vc.

abraço.
Responder

21/10/2015

Fernando

Desculpe a demora, sem agrupar dá erro, segue o create e insert.


Tentei de outras formas com pivot, mas sem sucesso



create table pro2A (proCod int, lojCod int, proQtest int)

insert pro2A values(100, 1, 5)
insert pro2A values(100, 2, 10)
insert pro2A values(100, 3, 15)
insert pro2A values(200, 1, 10)
insert pro2A values(200, 2, 5)
insert pro2A values(200, 3, 5)
insert pro2A values(300, 1, 5)
insert pro2A values(300, 2, 10)
insert pro2A values(300, 3, 15)
insert pro2A values(400, 1, 10)
insert pro2A values(400, 2, 5)
insert pro2A values(400, 3, 5)
Responder

21/10/2015

Isaac Jose

segue.

select b.proCod, MAX(b.loja1)loja1,MAX(b.loja2)loja2,MAX(b.loja3)loja3
from
(
select a.proCod,
LOJA1 = CASE WHEN A.lojCod = 1 THEN SUM(a.proqtest)
END,
LOJa2 = CASE WHEN A.lojCod = 2 THEN SUM(a.proqtest)
END,
LOJA3 = CASE WHEN A.lojCod = 3 THEN SUM(a.proqtest)
END
from pro2A a
GROUP BY a.lojCod,a.proCod) b
GROUP BY b.proCod




result
proCod loja1 loja2 loja3
100 5 10 15
200 10 5 5
300 5 10 15
400 10 5 5
Responder

28/10/2015

Fernando

Excelente.

Deu exatamente como precisava. Agora estou implementando com segundas e terceiras tabelas. Ajudou muito!


Obrigadão.... Valeu mesmo Isaac!
Responder

28/10/2015

Isaac Jose

por nada . disponha sempre tera alguem para ajudar a resolver e entender melhor, continue postando suas duvidas se eu souber ajudarei senao sempre teremos alguem para ajudar a resolver
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