Usuário com melhor resposta
SQL SERVER

Pergunta
-
Bom dia.
no seguinte script:
SELECT
case when (DATEPART(MONTH, cr.VENCIMENTO) = (SELECT MONTH(GETDATE()) + 1 AS Expr1))
AND (DATEPART(YEAR, cr.VENCIMENTO) = 2013) then SUM(cr.VALORNAMOEDA1) end as teste
FROM CONTAARECEBER_R cr
WHERE
cr.RCLIENTE = 2323713
and cr.rsituacao = '2347'
group by cr.VENCIMENTO,
cr.VALORNAMOEDA1o resultado é o seguinte:
Como eu faço para somar todos os valores e retornar somente o valor total?
Obrigado.
Respostas
-
César.
Como você tem uma subquery, não dá para te indicar a inversão do sum, colocando ele fora do teu caso.
Mas você pode fazer uma CTE para resolver o teu caso:
;WITH CTE AS ( SELECT case when (DATEPART(MONTH, cr.VENCIMENTO) = (SELECT MONTH(GETDATE()) + 1 AS Expr1)) AND (DATEPART(YEAR, cr.VENCIMENTO) = 2013) then SUM(cr.VALORNAMOEDA1) end as teste FROM CONTAARECEBER_R cr WHERE cr.RCLIENTE = 2323713 and cr.rsituacao = '2347' group by cr.VENCIMENTO, cr.VALORNAMOEDA1 ) SELECT SUM(TESTE) FROM CTE
Espero que te ajude.
[]'s
- Marcado como Resposta César Felix quarta-feira, 17 de abril de 2013 12:38
Todas as Respostas
-
Cesar, veja se assim funciona:
SELECT case when (DATEPART(MONTH, cr.VENCIMENTO) = (SELECT MONTH(GETDATE()) + 1 AS Expr1)) AND (DATEPART(YEAR, cr.VENCIMENTO) = 2013) then SUM(cr.VALORNAMOEDA1) end as teste FROM CONTAARECEBER_R cr WHERE cr.RCLIENTE = 2323713 and cr.rsituacao = '2347'
Alexandre Matayosi Conde Mauricio.
- Sugerido como Resposta Fabrizzio CaputoModerator sexta-feira, 12 de abril de 2013 12:39
-
Bom dia,
César, você também pode experimentar dessa forma:
SELECT SUM(cr.VALORNAMOEDA1) as teste FROM CONTAARECEBER_R cr WHERE cr.RCLIENTE = 2323713 and cr.rsituacao = '2347' and DATEDIFF(MONTH, cr.VENCIMENTO, DATEADD(MONTH, 1, GETDATE())) = 1
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
-
-
César.
Como você tem uma subquery, não dá para te indicar a inversão do sum, colocando ele fora do teu caso.
Mas você pode fazer uma CTE para resolver o teu caso:
;WITH CTE AS ( SELECT case when (DATEPART(MONTH, cr.VENCIMENTO) = (SELECT MONTH(GETDATE()) + 1 AS Expr1)) AND (DATEPART(YEAR, cr.VENCIMENTO) = 2013) then SUM(cr.VALORNAMOEDA1) end as teste FROM CONTAARECEBER_R cr WHERE cr.RCLIENTE = 2323713 and cr.rsituacao = '2347' group by cr.VENCIMENTO, cr.VALORNAMOEDA1 ) SELECT SUM(TESTE) FROM CTE
Espero que te ajude.
[]'s
- Marcado como Resposta César Felix quarta-feira, 17 de abril de 2013 12:38
-
-
-
Bom dia,
César, acho que você também pode experimentar mais ou menos dessa forma:
SELECT SUM(case when DATEDIFF(MONTH, cr.VENCIMENTO, DATEADD(MONTH, 1, GETDATE())) = 1 then cr.VALORNAMOEDA1 else 0 end) as teste FROM CONTAARECEBER_R cr WHERE cr.RCLIENTE = 2323713 and cr.rsituacao = '2347'
Espero que seja útil.
Assinatura: http://www.imoveisemexposicao.com.br
- Editado gapimex terça-feira, 16 de abril de 2013 13:18
-