Usuário com melhor resposta
Cálculos entre colunas

Pergunta
-
Pessoal na query abaixo tenho 2 subquery onde faço callo de quantidade de itens as colunas SOMAE e SOMAS, preciso fazer um calculo de subtração entre elas tipo(SOMAE - SOMAS) AS TOTAL_ES, nunca fiz algo deste tipo no sql e gostaria de saber se é possível e como?
SELECT -- P.Descricao AS Descricao, -- ESI.Id_Doc AS NF, -- ESI.Cod_Estoque AS Cod_Estoque, -- ESI.Cod_Produto AS Cod_Produto, -- ESI.Cod_Empresa AS Cod_Empresa, -- S.Dta_Entrada AS Data, -- ESI.Qtde AS Qtde, -- ESI.V_Unitario AS V_Unitario, -- ESI.V_Total AS V_Total, (SELECT SUM(ESI.Qtde) FROM Entrada_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '01') AND (ESI.Cod_Produto = '00322') AND (ESI.Cod_Empresa = '1')AND (S.Dta_Entrada Between '2007-07-31 00:00:00' AND '2007-12-31 00:00:00') ) AS SOMAE, (SELECT SUM(ESI.Qtde) FROM Saida_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '01') AND (ESI.Cod_Produto = '00322') AND (ESI.Cod_Empresa = '1') AND (S.Dta_Entrada Between '2007-07-31 00:00:00' AND '2007-12-31 00:00:00') ) AS SOMAS FROM dbo.Entrada_Itens AS ESI INNER JOIN dbo.Produtos AS P ON ESI.Cod_Empresa = P.Cod_Empresa AND ESI.Cod_Estoque = P.Cod_Estoque AND ESI.Cod_Produto = P.Cod_Produto INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '01') AND (ESI.Cod_Produto = '00322') AND (ESI.Cod_Empresa = '1') AND (S.Dta_Entrada Between '2007-07-31 00:00:00' AND '2010-12-31 00:00:00')
Moizés Cerqueira | MCP
Site: www.moizes.cerqueira.nom.br
Twitter: @moicer
Respostas
-
Existem algumas formas para se fazer isto, esta é uma..
select SOMAE, SOMAS, SOMAE-SOMAS 'SOMAES' from ( SELECT (SELECT SUM(ESI.Qtde) FROM Entrada_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '01') AND (ESI.Cod_Produto = '00322') AND (ESI.Cod_Empresa = '1')AND (S.Dta_Entrada Between '2007-07-31 00:00:00' AND '2007-12-31 00:00:00') ) AS SOMAE, (SELECT SUM(ESI.Qtde) FROM Saida_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '01') AND (ESI.Cod_Produto = '00322') AND (ESI.Cod_Empresa = '1') AND (S.Dta_Entrada Between '2007-07-31 00:00:00' AND '2007-12-31 00:00:00') ) AS SOMAS FROM dbo.Entrada_Itens AS ESI INNER JOIN dbo.Produtos AS P ON ESI.Cod_Empresa = P.Cod_Empresa AND ESI.Cod_Estoque = P.Cod_Estoque AND ESI.Cod_Produto = P.Cod_Produto INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '01') AND (ESI.Cod_Produto = '00322') AND (ESI.Cod_Empresa = '1') AND (S.Dta_Entrada Between '2007-07-31 00:00:00' AND '2010-12-31 00:00:00') )x
att.
Marcelo FernandesMCP, MCDBA, MCSA, MCTS.
Se útil, classifique!!!
Me siga no twitter: @marcelodba- Marcado como Resposta Moizés Cerqueira segunda-feira, 27 de dezembro de 2010 17:23
-
FIz parecido e deu certo, obrigado pela dica.
SELECT P.Descricao AS Descricao, ESI.Id_Doc AS NF, ESI.Cod_Estoque AS Cod_Estoque, ESI.Cod_Produto AS Cod_Produto, ESI.Cod_Empresa AS Cod_Empresa, S.Dta_Entrada AS Data, ESI.Qtde AS Qtde, ESI.V_Unitario AS V_Unitario, ESI.V_Total AS V_Total, (SELECT SUM(ESI.Qtde) FROM Entrada_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '01') AND (ESI.Cod_Produto = '00322') AND (ESI.Cod_Empresa = '1')AND (S.Dta_Entrada Between '2007-07-31 00:00:00' AND '2007-12-31 00:00:00') ) AS SOMAE, (SELECT SUM(ESI.Qtde) FROM Saida_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '01') AND (ESI.Cod_Produto = '00322') AND (ESI.Cod_Empresa = '1') AND (S.Dta_Entrada Between '2007-07-31 00:00:00' AND '2007-12-31 00:00:00') ) AS SOMAS, --Caluclos (SELECT (SELECT SUM(ESI.Qtde) FROM Entrada_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '01') AND (ESI.Cod_Produto = '00322') AND (ESI.Cod_Empresa = '1')AND (S.Dta_Entrada Between '2007-07-31 00:00:00' AND '2007-12-31 00:00:00')) - (SELECT SUM(ESI.Qtde) FROM Saida_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '01') AND (ESI.Cod_Produto = '00322') AND (ESI.Cod_Empresa = '1') AND (S.Dta_Entrada Between '2007-07-31 00:00:00' AND '2007-12-31 00:00:00'))) AS VALORES FROM dbo.Entrada_Itens AS ESI INNER JOIN dbo.Produtos AS P ON ESI.Cod_Empresa = P.Cod_Empresa AND ESI.Cod_Estoque = P.Cod_Estoque AND ESI.Cod_Produto = P.Cod_Produto INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '01') AND (ESI.Cod_Produto = '00322') AND (ESI.Cod_Empresa = '1') AND (S.Dta_Entrada Between '2007-07-31 00:00:00' AND '2010-12-31 00:00:00')
Moizés Cerqueira | MCP
Site: www.moizes.cerqueira.nom.br
Twitter: @moicer- Marcado como Resposta Moizés Cerqueira segunda-feira, 27 de dezembro de 2010 17:24
Todas as Respostas
-
Existem algumas formas para se fazer isto, esta é uma..
select SOMAE, SOMAS, SOMAE-SOMAS 'SOMAES' from ( SELECT (SELECT SUM(ESI.Qtde) FROM Entrada_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '01') AND (ESI.Cod_Produto = '00322') AND (ESI.Cod_Empresa = '1')AND (S.Dta_Entrada Between '2007-07-31 00:00:00' AND '2007-12-31 00:00:00') ) AS SOMAE, (SELECT SUM(ESI.Qtde) FROM Saida_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '01') AND (ESI.Cod_Produto = '00322') AND (ESI.Cod_Empresa = '1') AND (S.Dta_Entrada Between '2007-07-31 00:00:00' AND '2007-12-31 00:00:00') ) AS SOMAS FROM dbo.Entrada_Itens AS ESI INNER JOIN dbo.Produtos AS P ON ESI.Cod_Empresa = P.Cod_Empresa AND ESI.Cod_Estoque = P.Cod_Estoque AND ESI.Cod_Produto = P.Cod_Produto INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '01') AND (ESI.Cod_Produto = '00322') AND (ESI.Cod_Empresa = '1') AND (S.Dta_Entrada Between '2007-07-31 00:00:00' AND '2010-12-31 00:00:00') )x
att.
Marcelo FernandesMCP, MCDBA, MCSA, MCTS.
Se útil, classifique!!!
Me siga no twitter: @marcelodba- Marcado como Resposta Moizés Cerqueira segunda-feira, 27 de dezembro de 2010 17:23
-
FIz parecido e deu certo, obrigado pela dica.
SELECT P.Descricao AS Descricao, ESI.Id_Doc AS NF, ESI.Cod_Estoque AS Cod_Estoque, ESI.Cod_Produto AS Cod_Produto, ESI.Cod_Empresa AS Cod_Empresa, S.Dta_Entrada AS Data, ESI.Qtde AS Qtde, ESI.V_Unitario AS V_Unitario, ESI.V_Total AS V_Total, (SELECT SUM(ESI.Qtde) FROM Entrada_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '01') AND (ESI.Cod_Produto = '00322') AND (ESI.Cod_Empresa = '1')AND (S.Dta_Entrada Between '2007-07-31 00:00:00' AND '2007-12-31 00:00:00') ) AS SOMAE, (SELECT SUM(ESI.Qtde) FROM Saida_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '01') AND (ESI.Cod_Produto = '00322') AND (ESI.Cod_Empresa = '1') AND (S.Dta_Entrada Between '2007-07-31 00:00:00' AND '2007-12-31 00:00:00') ) AS SOMAS, --Caluclos (SELECT (SELECT SUM(ESI.Qtde) FROM Entrada_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '01') AND (ESI.Cod_Produto = '00322') AND (ESI.Cod_Empresa = '1')AND (S.Dta_Entrada Between '2007-07-31 00:00:00' AND '2007-12-31 00:00:00')) - (SELECT SUM(ESI.Qtde) FROM Saida_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '01') AND (ESI.Cod_Produto = '00322') AND (ESI.Cod_Empresa = '1') AND (S.Dta_Entrada Between '2007-07-31 00:00:00' AND '2007-12-31 00:00:00'))) AS VALORES FROM dbo.Entrada_Itens AS ESI INNER JOIN dbo.Produtos AS P ON ESI.Cod_Empresa = P.Cod_Empresa AND ESI.Cod_Estoque = P.Cod_Estoque AND ESI.Cod_Produto = P.Cod_Produto INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '01') AND (ESI.Cod_Produto = '00322') AND (ESI.Cod_Empresa = '1') AND (S.Dta_Entrada Between '2007-07-31 00:00:00' AND '2010-12-31 00:00:00')
Moizés Cerqueira | MCP
Site: www.moizes.cerqueira.nom.br
Twitter: @moicer- Marcado como Resposta Moizés Cerqueira segunda-feira, 27 de dezembro de 2010 17:24