none
Cálculos entre colunas RRS feed

  • 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
    segunda-feira, 27 de dezembro de 2010 16:50

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 Fernandes


    MCP, 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
    segunda-feira, 27 de dezembro de 2010 17:04
  • 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
    segunda-feira, 27 de dezembro de 2010 17:23

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 Fernandes


    MCP, 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
    segunda-feira, 27 de dezembro de 2010 17:04
  • 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
    segunda-feira, 27 de dezembro de 2010 17:23