SOMAR SQL
Pessoal o SQL abaixo funciona certinho, soh q to precisando do valor total de tudo.
Alguem me da uma luz? Grato
SELECT ((L.VALORORIGINAL +
L.VALORJUROS +
L.VALORMULTA -
L.VALORDESCONTO -
L.VALOROP2 -
L.VALOROP6 -
L.VALORIRRF -
L.VALORADIANTAMENTO)
-(SUM(COALESCE(FTRBLAN.VALOR, 0))))* -1
FROM FTDO TD, FLAN L
LEFT JOIN FTRBLAN ON FTRBLAN.IDLAN = L.IDLAN
WHERE L.CODTDO = TD.CODTDO
AND L.CODCOLIGADA = TD.CODCOLIGADA
AND TD.EDEVOLUCAO <> [ô]4[ô]
AND L.CODTDO IN (001, 003, 006, 007, 010, 030, 002, 017)
AND YEAR(L.DATAVENCIMENTO)=2009
AND DATEPART(MONTH, L.DATAVENCIMENTO)=[ô]01[ô]
AND L.PAGREC=2
AND STATUSLAN IN (0,1,3)
AND L.NFOUDUP <> 1
GROUP BY L.IDLAN,
L.VALORORIGINAL,
L.VALORJUROS,
L.VALORMULTA,
L.VALORDESCONTO,
L.VALOROP2,
L.VALOROP6,
L.VALORIRRF,
L.VALORADIANTAMENTO
Alguem me da uma luz? Grato
SELECT ((L.VALORORIGINAL +
L.VALORJUROS +
L.VALORMULTA -
L.VALORDESCONTO -
L.VALOROP2 -
L.VALOROP6 -
L.VALORIRRF -
L.VALORADIANTAMENTO)
-(SUM(COALESCE(FTRBLAN.VALOR, 0))))* -1
FROM FTDO TD, FLAN L
LEFT JOIN FTRBLAN ON FTRBLAN.IDLAN = L.IDLAN
WHERE L.CODTDO = TD.CODTDO
AND L.CODCOLIGADA = TD.CODCOLIGADA
AND TD.EDEVOLUCAO <> [ô]4[ô]
AND L.CODTDO IN (001, 003, 006, 007, 010, 030, 002, 017)
AND YEAR(L.DATAVENCIMENTO)=2009
AND DATEPART(MONTH, L.DATAVENCIMENTO)=[ô]01[ô]
AND L.PAGREC=2
AND STATUSLAN IN (0,1,3)
AND L.NFOUDUP <> 1
GROUP BY L.IDLAN,
L.VALORORIGINAL,
L.VALORJUROS,
L.VALORMULTA,
L.VALORDESCONTO,
L.VALOROP2,
L.VALOROP6,
L.VALORIRRF,
L.VALORADIANTAMENTO
Veja se é isto que você quer.... Se precisar em uma só operação, mando a seguir mas, se puder colocar deste modo em Stored Procedure, fica mais rápido
DECLARE @temp
(
Soma DECIMAL(38,2)
)
INSERT INTO @Temp(Soma)
SELECT (( l.ValorOriginal + l.ValorJuros + l.ValorMulta - l.ValorDesconto
- l.ValorOp2 - l.ValorOp6 - l.ValorIRRF - l.ValorAdiantamento)
- SUM(COALESCE(FB.VALOR, 0)))* -1
FROM ftdo td
INNER JOIN flan l
ON l.codtdo = td.codtdo
LEFT JOIN ftrblan fb
ON fb.idLan = l.idLan
WHERE l.CodColigada = td.codcoligada
AND td.edEvolucao <> [ô]4[ô]
AND l.CodTdo IN(001, 003, 006, 007, 010, 030, 002, 017)
AND YEAR(l.DataVencimento)=2009
AND DATEPART(MONTH, l.DataVencimento) = 01
AND l.PagRec = 2
AND StatusLan IN(0,1,3)
AND l.NFouDup <> 1
GROUP BY l.idLan, l.ValorOriginal, l.ValorJuros, l.ValorMulta,
l.ValorDesconto, l.ValorOp2, l.ValorOp6, l.ValorIRRF, l.ValorAdiantamento
SELECT SUM(Soma) AS Total
FROM @temp
Aqui vai a versão num só passo, mas com processamento mais lento.
SELECT SUM(Soma)
FROM (SELECT (( l.ValorOriginal + l.ValorJuros + l.ValorMulta - l.ValorDesconto
- l.ValorOp2 - l.ValorOp6 - l.ValorIRRF - l.ValorAdiantamento)
- SUM(COALESCE(FB.VALOR, 0)))* -1 AS Soma
FROM ftdo td
INNER JOIN flan l
ON l.codtdo = td.codtdo
LEFT JOIN ftrblan fb
ON fb.idLan = l.idLan
WHERE l.CodColigada = td.codcoligada
AND td.edEvolucao <> [ô]4[ô]
AND l.CodTdo IN(001, 003, 006, 007, 010, 030, 002, 017)
AND YEAR(l.DataVencimento)=2009
AND DATEPART(MONTH, l.DataVencimento) = 01
AND l.PagRec = 2
AND StatusLan IN(0,1,3)
AND l.NFouDup <> 1
GROUP BY l.idLan, l.ValorOriginal, l.ValorJuros, l.ValorMulta,
l.ValorDesconto, l.ValorOp2, l.ValorOp6, l.ValorIRRF, l.ValorAdiantamento) AS TabSoma
vou testar aki depois te falo vlw pela atenção
Aproveitando o gancho do tópico,
Tenho uma SP que concatena os valores em um único campo. Porém necessito contar cada linha retornada.
exemplo
Atualmente a SP retorna assim :
Preciso contar as linhas de forma que retornasse assim :
Isso no MYSQL ok.
Tenho uma SP que concatena os valores em um único campo. Porém necessito contar cada linha retornada.
exemplo
Atualmente a SP retorna assim :
Citação:200|2009/10/06|xxxxxxxxxxxxxx|14500000|etc...|etc....
005|2009/10/06|xxxxxxxxxxxxxx|14500000|etc...|etc....
901|2009/10/06|xxxxxxxxxxxxxx|14500000|etc...|etc....
Preciso contar as linhas de forma que retornasse assim :
Citação:001|200|2009/10/06|xxxxxxxxxxxxxx|14500000|etc...|etc....
002|005|2009/10/06|xxxxxxxxxxxxxx|14500000|etc...|etc....
003|901|2009/10/06|xxxxxxxxxxxxxx|14500000|etc...|etc....
Isso no MYSQL ok.
kra deu certinho, vlw pela força, brigadao msm
Tópico encerrado , respostas não são mais permitidas