Usuário com melhor resposta
Campo só apresenta um tipo de valor

Pergunta
-
Olá
Tenho um campo em uma query que retorna entrada e saida de itens
Se for entrada o número é positivo. senão negativo.
Dessa forma:
A query funciona dessa forma:
Use SCC ;WITH CTE AS ( SELECT ROW_NUMBER() OVER (ORDER BY X.NF, X.DATA) as ID, X.* FROM ( SELECT P.Descricao AS Descricao, P.Cod_Produto AS Codigo_do_Produto, ESI.Id_Doc AS NF, 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, S.Id_Doc AS Id_Doc 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 INNER JOIN [dbo].[Estoque] AS EST ON EST.Cod_Empresa = S.Cod_Empresa AND EST.Cod_Produto = P.Cod_Produto WHERE (ESI.Cod_Estoque = '01') AND (ESI.Cod_Produto = '00322') AND (ESI.Cod_Empresa = '1') AND (S.Dta_Entrada Between '2007-07-31' AND '2007-12-31') UNION SELECT P.Descricao AS Descricao, P.Cod_Produto AS Codigo_do_Produto, ESI.Id_Doc AS NF, 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, S.Id_Doc AS Id_Doc FROM dbo.Saida_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 INNER JOIN [dbo].[Estoque] AS EST ON EST.Cod_Empresa = S.Cod_Empresa AND EST.Cod_Produto = P.Cod_Produto WHERE (ESI.Cod_Estoque = '01') AND (ESI.Cod_Produto = '00322') AND (ESI.Cod_Empresa = '1') AND (S.Dta_Entrada Between '2007-07-31' AND'2007-12-31') ) AS X ) SELECT *, --==========SOMA qtd de entadas no periodo========== (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' AND '2007-12-31')) AS V_SE, --==========Total entradas no estoque========== (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' AND '2007-12-31'))*(V_Unitario)AS V_SSE, --==========SOMA SAIDAS no Periodo========== (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' AND '2007-12-31')) AS V_SS, --==========Estoque no período================= --(select ESI.[Qtde] AS QtdeSaida --from dbo.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' AND'2007-12-31')) AS QtdeSaida, --==========Total de SAIDAS no estoque========== (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' AND '2007-12-31'))*(V_Unitario) AS V_SSV, --==========ENTRADAS ANTES DO PERIODO========== ((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 < '2007-07-31')) - (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 < '2007-07-31'))) AS V_DQ, --==========Disponivel no estoque antes do periodo========== ((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 < '2007-07-31')) -(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 < '2007-07-31')))*(V_Unitario) AS V_DV, --=========================================================== V_Acum = (SELECT SUM(V_Total) FROM CTE WHERE ID <= C.ID) FROM CTE AS C
Quando importo o parâmetro no Crystal Report 8 o relatório so me traz o resultdos negativos.
Aqui está o arquivo RPT
Como eu faço para que no relatório mostre os resultado positivos e negativos conforme a query mostra?
O sistema está em VB6 e está rodando perfeitamente.
Obrigado.
Respostas
-
No segundo select do Union o inner join estava utilizando campos da Saida ao invés da Entrada.
- Marcado como Resposta Paulo Romeiro terça-feira, 25 de fevereiro de 2014 19:29