Pessoal o select abaixo não rodou, elaborei o select para agrupar (por produto) a soma das quantidades em estoque (antes do inventário, que estão separada por lote) com o estoque após o inventário.
SELECT
A.CD_CONTAGEM,
A.CD_PRODUTO,
SUM(A.QT_ESTOQUE) AS QT_ANTERIOR,
B.QT_ESTOQUE AS QT_ATUAL
FROM
DBAMV.COPIA_ESTOQUE A
LEFT OUTER JOIN
DBAMV.ITCONTAGEM B
ON
(
A.CD_CONTAGEM = B.CD_CONTAGEM
)
AND
(
A.CD_PRODUTO = B.CD_PRODUTO
)
WHERE
A.CD_CONTAGEM = 2189
GROUP BY
A.CD_CONTAGEM,
A.CD_PRODUTO
ORDER BY
A.CD_PRODUTO ASC;
SELECT
A.CD_CONTAGEM,
A.CD_PRODUTO,
-- Que informação você está localizando, como uma mesma coluna tem a contidade de estoque atual e anterior. --
SUM(A.QT_ESTOQUE) AS QT_ANTERIOR,
B.QT_ESTOQUE AS QT_ATUAL
--------------------------------------------------------------------------------------
FROM
DBAMV.COPIA_ESTOQUE A
LEFT OUTER JOIN
DBAMV.ITCONTAGEM B
-- Nessa parte não é necessário colocar os parentes neste caso --
ON
(
A.CD_CONTAGEM = B.CD_CONTAGEM
)
AND
(
A.CD_PRODUTO = B.CD_PRODUTO
)
WHERE
A.CD_CONTAGEM = 2189
-- Falta agrupar coluna B.QT_ESTOQUE para funcionar a soma que está na linha acima dela --
GROUP BY
A.CD_CONTAGEM,
A.CD_PRODUTO
ORDER BY
A.CD_PRODUTO ASC;
Marques,
Não poderia te ajudar neste momento, pois o firewall da empresa bloqueia esse tipo de site. Mas assim que tiver um oportunidade estarei dando uma olhada e tentarei te ajudar nesse problema.
SELECT
A.CD_CONTAGEM,
A.CD_PRODUTO,
B.QT_ANTERIOR,
B.QT_ESTOQUE AS QT_ATUAL
FROM (SELECT A.CD_CONTAGEM,A.CD_PRODUTO,SUM(A.QT_ESTOQUE) AS QT_ANTERIOR FROM DBAMV.COPIA_ESTOQUE GROUP BY A.CD_CONTAGEM,A.CD_PRODUTO) A
JOIN DBAMV.ITCONTAGEM B
ON A.CD_CONTAGEM = B.CD_CONTAGEM
AND A.CD_PRODUTO = B.CD_PRODUTO
WHERE
A.CD_CONTAGEM = 2189
ORDER BY
A.CD_PRODUTO ASC;
SELECT
A.CD_CONTAGEM,
A.CD_PRODUTO,
B.QT_ANTERIOR,
B.QT_ESTOQUE AS QT_ATUAL
FROM (SELECT CD_CONTAGEM,CD_PRODUTO,SUM(QT_ESTOQUE) AS QT_ANTERIOR
FROM DBAMV.COPIA_ESTOQUE
GROUP BY CD_CONTAGEM,CD_PRODUTO) A
JOIN DBAMV.ITCONTAGEM B
ON A.CD_CONTAGEM = B.CD_CONTAGEM
AND A.CD_PRODUTO = B.CD_PRODUTO
WHERE
A.CD_CONTAGEM = 2189
ORDER BY
A.CD_PRODUTO ASC;
SELECT
A.CD_CONTAGEM,
A.CD_PRODUTO,
B.QT_ESTOQUE AS QT_ATUAL,
A.QT_ANTERIOR
FROM
(
SELECT
CD_CONTAGEM,
CD_PRODUTO,
SUM(QT_ESTOQUE) AS QT_ANTERIOR
FROM
DBAMV.COPIA_ESTOQUE
GROUP BY
CD_CONTAGEM,
CD_PRODUTO
)
A
JOIN
DBAMV.ITCONTAGEM B
ON
A.CD_CONTAGEM = B.CD_CONTAGEM
AND A.CD_PRODUTO = B.CD_PRODUTO
WHERE
A.CD_CONTAGEM = 2189
ORDER BY
A.CD_PRODUTO ASC;
Deve haver dois registros para o mesmo produto, por isso quando se faz o join com a tabela B ele trás os dois.
Não é muito boinito mas utilizado o distinct para ver se resolver seu problema.
Para utilizar o sum, terá que fazer um group by.
Agora vai cair na questão no que você deseja encontra, tenta utilizar o sum o select , ai se não funcionar criar um sub-select da mesma maneira do outro.