Usuário com melhor resposta
Agrupamento de lançamentos

Pergunta
-
Olá pessoal.
Preciso fazer uma query que me permita agrupar totais mensais de movimentos financeiros por conta financeira. Vou explicar melhor: Tenho uma tabela que recebe lançamentos em contas financeiras e preciso de uma query que relacione o período de um ano com o total de cada conta agrupados por mes. Vamos lá.
No formulário, irei fornecer o periodo desejado.
Tabela Movto
MOFDATA, MOFCONTA, MOFVALOR
Layout da consulta
Conta Jul14 Jun14 Mai14 Abr14 Mar14 Fev14 Jan14 Dez13 Nov13 Out13 Set13 Ago13
303 1020,00 200,33 540,99 ...
304 876,99 989,55 ...
...
Não consegui fazer a query para agrupar desta forma. Alguém poderia ajudar?? brigado
Respostas
-
Deleted
- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 24 de julho de 2014 17:44
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 24 de julho de 2014 17:44
-
Favor não esquecer de marcar como respondido, caso atenda a sua necessidade, obrigado.
PRIMEIRA OPÇÃO
SELECT [MOFCONTA] AS CONTA,
JAN = SUM(CASE WHEN MONTH([MOFDATA])=1 THEN [MOFVALOR] ELSE 0.00 END),
FEV = SUM(CASE WHEN MONTH([MOFDATA])=2 THEN [MOFVALOR] ELSE 0.00 END),
MAR = SUM(CASE WHEN MONTH([MOFDATA])=3 THEN [MOFVALOR] ELSE 0.00 END),
ABR = SUM(CASE WHEN MONTH([MOFDATA])=4 THEN [MOFVALOR] ELSE 0.00 END)
FROM [DBO].[MOVTO]
WHERE [MOFDATA] >= '2014-01-01' AND [MOFDATA] < '2015-01-01'
GROUP BY [MOFCONTA]
ORDER BY YEAR([MOFCONTA]);
SEGUNDA OPÇÃO
SELECT * FROM (
SELECT [MOFCONTA] AS CONTA, CONVERT(VARCHAR(3), [MOFDATA], 100) AS MESES,
ISNULL([MOFVALOR], 0.00) AS VALOR
FROM [DBO].[MOVTO]
WHERE [MOFDATA] >= '2014-01-01' AND [MOFDATA] < '2015-01-01'
) AS BRUTO
PIVOT(SUM(VALOR) FOR MESES IN ([JAN], [FEV], [MAR], [ABR], [MAI], [JUN], [JUL], [AGO], [SET], [OUT], [NOV],[DEZ] )) AS R;
- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 24 de julho de 2014 17:44
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 24 de julho de 2014 17:44
Todas as Respostas
-
Deleted
- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 24 de julho de 2014 17:44
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 24 de julho de 2014 17:44
-
Favor não esquecer de marcar como respondido, caso atenda a sua necessidade, obrigado.
PRIMEIRA OPÇÃO
SELECT [MOFCONTA] AS CONTA,
JAN = SUM(CASE WHEN MONTH([MOFDATA])=1 THEN [MOFVALOR] ELSE 0.00 END),
FEV = SUM(CASE WHEN MONTH([MOFDATA])=2 THEN [MOFVALOR] ELSE 0.00 END),
MAR = SUM(CASE WHEN MONTH([MOFDATA])=3 THEN [MOFVALOR] ELSE 0.00 END),
ABR = SUM(CASE WHEN MONTH([MOFDATA])=4 THEN [MOFVALOR] ELSE 0.00 END)
FROM [DBO].[MOVTO]
WHERE [MOFDATA] >= '2014-01-01' AND [MOFDATA] < '2015-01-01'
GROUP BY [MOFCONTA]
ORDER BY YEAR([MOFCONTA]);
SEGUNDA OPÇÃO
SELECT * FROM (
SELECT [MOFCONTA] AS CONTA, CONVERT(VARCHAR(3), [MOFDATA], 100) AS MESES,
ISNULL([MOFVALOR], 0.00) AS VALOR
FROM [DBO].[MOVTO]
WHERE [MOFDATA] >= '2014-01-01' AND [MOFDATA] < '2015-01-01'
) AS BRUTO
PIVOT(SUM(VALOR) FOR MESES IN ([JAN], [FEV], [MAR], [ABR], [MAI], [JUN], [JUL], [AGO], [SET], [OUT], [NOV],[DEZ] )) AS R;
- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 24 de julho de 2014 17:44
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 24 de julho de 2014 17:44
-
-
Pessoal, boa tarde.
Optei por usar esta resposta que foi apresentada mas estou tendo um erro. Estou fazendo a seguinte query:
SELECT [MOFCONTA] AS CONTA, JAN=SUM(CASE WHEN MONTH([MOFDATA])=1 THEN [MOFVALOR] ELSE 0.00 END), FEV=SUM(CASE WHEN MONTH([MOFDATA])=2 THEN [MOFVALOR] ELSE 0.00 END), MAR=SUM(CASE WHEN MONTH([MOFDATA])=3 THEN [MOFVALOR] ELSE 0.00 END), ABR = SUM(CASE WHEN MONTH([MOFDATA])=4 THEN [MOFVALOR] ELSE 0.00 END), MAI = SUM(CASE WHEN MONTH([MOFDATA])=5 THEN [MOFVALOR] ELSE 0.00 END), JUN = SUM(CASE WHEN MONTH([MOFDATA])=6 THEN [MOFVALOR] ELSE 0.00 END), JUL = SUM(CASE WHEN MONTH([MOFDATA])=7 THEN [MOFVALOR] ELSE 0.00 END), AGO = SUM(CASE WHEN MONTH([MOFDATA])=8 THEN [MOFVALOR] ELSE 0.00 END), SET = SUM(CASE WHEN MONTH([MOFDATA])=9 THEN [MOFVALOR] ELSE 0.00 END), OUT = SUM(CASE WHEN MONTH([MOFDATA])=10 THEN [MOFVALOR] ELSE 0.00 END), NOV = SUM(CASE WHEN MONTH([MOFDATA])=11 THEN [MOFVALOR] ELSE 0.00 END), DEZ = SUM(CASE WHEN MONTH([MOFDATA])=12 THEN [MOFVALOR] ELSE 0.00 END) from SCCAMOF WHERE [MOFDATA] >= '2014-01-01' AND [MOFDATA] < '2015-01-01'
GROUP BY [MOFCONTA] ORDER BY YEAR([MOFCONTA]);
... e a Mensagem de erro é: Function name is missing )
O que pode estar errado?
Obrigado a todos