SOMAR SQL

GUILHERMEMFA 06/10/2009 12:17:40
#324577
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
RCMRO 06/10/2009 12:55:08
#324582
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
RCMRO 06/10/2009 13:00:39
#324584
Resposta escolhida
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
GUILHERMEMFA 06/10/2009 13:01:20
#324585
vou testar aki depois te falo vlw pela atenção
FOXMAN 06/10/2009 15:30:36
#324614
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 :

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.


GUILHERMEMFA 06/10/2009 15:37:59
#324616
kra deu certinho, vlw pela força, brigadao msm
Tópico encerrado , respostas não são mais permitidas