Resultado da soma em duas colunas
22/09/2015
0
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
Posts
22/09/2015
Isaac Jose
att.Isaac
select loja, codprod, sum(qtdprod) produto from tb
group by loja,codprod
order by loja , codprod
22/09/2015
Fernando
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?
23/09/2015
Isaac Jose
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
25/09/2015
Fernando
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?
25/09/2015
Isaac Jose
monte um codigo de create e de insert de uma pequena quantidade que tento fazer para vc.
abraço.
25/09/2015
Isaac Jose
monte um codigo de create e de insert de uma pequena quantidade que tento fazer para vc.
abraço.
21/10/2015
Fernando
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)
21/10/2015
Isaac Jose
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
28/10/2015
Fernando
Deu exatamente como precisava. Agora estou implementando com segundas e terceiras tabelas. Ajudou muito!
Obrigadão.... Valeu mesmo Isaac!
28/10/2015
Isaac Jose
Clique aqui para fazer login e interagir na Comunidade :)