Soma de duas subconsultas e mostrar em um formulário

Estou desenvolvendo um aplicação no BASE de controle de orçamento familiar, onde um formulário mostra as despesas(exemplo: aluguel, alimentação, gastos fixos…) e os rendimentos de cada mês, alem de mostrar o saldo que é rendimento - despesa. Bem, através de várias subconsultas, consegui que o formulário mostrasse as despesas e os rendimentos por cada mês, porem não consigo totalizar as despesas e os rendimentos, isto é, somar todas as despesas e somar todos os rendimentos pra cada mês.
Pesquisei na internet e não encontrei nenhuma solução. Tentei somar duas ou mais subconsultas mas resulta em erro na sintaxe do sql.
Agradeço quem ajudar.

Qual controle, ou controles, vc está usando no formulário para exibir os resultados das subconsultas?

Se for um Controle de Tabela, uma possibilidade é criar uma coluna com o acumulado das despesas e outra com o acumulado dos rendimentos.

  • Aqui tem um exemplo de uma subconsulta que acumula valor por grupo.

At.te,

Grafeno (Antonio)

Obrigado por responder. Acho que o exemplo que você enviou não dá certo. Eu utilizo várias tabelas relacionadas e como o formulário só mostra uma única tabela ou uma única consulta ( se existir uma forma de de inserir duas consultas seria mais fácil resolver meu problema…) eu utilizo várias subconsultas para calcular e mostrar os resultados. Vou exmplicar melhor:
Há varias tabelas:

tabela gastos_cartao:

|id cartao|cod_cartao|valor| area|condicoes pagamento|data|

tabela gastos_extras:

|id gasto_extra|descricao| area | valor | data |

tabela gastos_fixos:

|id fixos| descricao | area | valor | data |

tabela redimentos :

|id rend | descricao | valor | data|

deverá aparecer assim no formulário ( os valores são mostrados através de caixas de texto).

            | JAN | FEV | MAR | ABR |
DESPESAS    | 300 | 300 | 300 | 300 | 
 cartoes    | 100 | 100 | 100 | 100 |
 fixos      | 100 | 100 | 100 | 100 |
 extras     | 100 | 100 | 100 | 100 |
RENDIMENTOS | 500 | 500 | 500 | 500 |
 salario    | 500 | 500 | 500 | 500 |
 13º        | 00  | 00  | 00  | 00  |
 ferias     | 00  | 00  | 00  | 00  |
 outros     | 00  | 00  | 00  | 00  |
SALDO (rendimento - despesa)
            |200  | 200 | 200 | 200 |

como não consegui inserir várias consultas no formulário, tive que fazer uma única consulta com várias subconsultas:

SELECT * FROM 
( SELECT SUM( "valor" ) AS "Jan cartão" FROM "gastos_cartao" WHERE "mes_referef" = '0' ),
 ( SELECT SUM( "valor" ) AS "Fev cartao" FROM "gastos_cartao" WHERE "mes_referef" = '1' ),
 ( SELECT SUM( "valor" ) AS "mar cartao" FROM "gastos_cartao" WHERE "mes_referef" = '2' ),
 ( SELECT SUM( "valor" ) AS "abr cartao" FROM "gastos_cartao" WHERE "mes_referef" = '3' ),
 ( SELECT SUM( "valor" ) AS "mai cartao" FROM "gastos_cartao" WHERE "mes_referef" = '4' ),
( SELECT SUM( "valor" ) AS "jan fixos" FROM "inserir_gastos_fixo" WHERE MONTH( "data" ) = '01' ),
 ( SELECT SUM( "valor" ) AS "fev fixos" FROM "inserir_gastos_fixo" WHERE MONTH( "data" ) = '02' ),
 ( SELECT SUM( "valor" ) AS "mar fixos" FROM "inserir_gastos_fixo" WHERE MONTH( "data" ) = '03' ),
 ( SELECT SUM( "valor" ) AS "abr fixos" FROM "inserir_gastos_fixo" WHERE MONTH( "data" ) = '04' ),
 ( SELECT SUM( "valor" ) AS "jan mercantil" FROM "gasto_dinheiro" WHERE MONTH( "Data" ) = '01' AND "area" = '101' ),
 ( SELECT SUM( "valor" ) AS "fev mercantil" FROM "gasto_dinheiro" WHERE MONTH( "Data" ) = '02' AND "area" = '101' ),
 ( SELECT SUM( "valor" ) AS "mar mercantil" FROM "gasto_dinheiro" WHERE MONTH( "Data" ) = '03' AND "area" = '101' ),
 ( SELECT SUM( "valor" ) AS "abr mercantil" FROM "gasto_dinheiro" WHERE MONTH( "Data" ) = '04' AND "area" = '101' ),
 ( SELECT SUM( "valor" ) AS "jan outros" FROM "gasto_dinheiro" WHERE NOT "area" = '101' AND MONTH( "Data" ) = '01' ),
 ( SELECT SUM( "valor" ) AS "fev outros" FROM "gasto_dinheiro" WHERE NOT "area" = '101' AND MONTH( "Data" ) = '02' ),
 ( SELECT SUM( "valor" ) AS "mar outros" FROM "gasto_dinheiro" WHERE NOT "area" = '101' AND MONTH( "Data" ) = '03' ),
 ( SELECT SUM( "valor" ) AS "abr outros" FROM "gasto_dinheiro" WHERE NOT "area" = '101' AND MONTH( "Data" ) = '04' ),
 ( SELECT SUM( "valor" ) AS "jan salario" FROM "redimento_mes" WHERE MONTH( "data" ) = '01' AND "id_rendimento" = '0' ),
 ( SELECT SUM( "valor" ) AS "fev salario" FROM "redimento_mes" WHERE MONTH( "data" ) = '02' AND "id_rendimento" = '0' ),
 ( SELECT SUM( "valor" ) AS "mar salario" FROM "redimento_mes" WHERE MONTH( "data" ) = '03' AND "id_rendimento" = '0' ),
 ( SELECT SUM( "valor" ) AS "abr salario" FROM "redimento_mes" WHERE MONTH( "data" ) = '04' AND "id_rendimento" = '0' ),
( SELECT SUM( "valor" ) AS "jan outras_rendas" FROM "redimento_mes" WHERE NOT "id_rendimento" = '0' AND MONTH( "data" ) = '01' ),
 ( SELECT SUM( "valor" ) AS "fev outras_rendas" FROM "redimento_mes" WHERE NOT "id_rendimento" = '0' AND MONTH( "data" ) = '02' ),
 ( SELECT SUM( "valor" ) AS "mar outras_rendas" FROM "redimento_mes" WHERE NOT "id_rendimento" = '0' AND MONTH( "data" ) = '03' ),
 ( SELECT SUM( "valor" ) AS "abr outras_rendas" FROM "redimento_mes" WHERE NOT "id_rendimento" = '0' AND MONTH( "data" ) = '04' );

com esse código eu consigo a soma de cada gasto e rendimento para cada mês, mas não consigo a soma de todos os gastos e rendimentos por cada mês.

Bom tarde,

Após o detalhamento do seu caso, fiz vários testes, quebrei a cabeça e cheguei a uma solução.

Insira essa consulta no Editor de SQL, confirmando que está marcada a opção “Executar o comando SQL diretamente”:

SELECT *,
"Jan Rend"-"Jan Desp" AS "Jan Saldo",
"Fev Rend"-"Fev Desp" AS "Fev Saldo",
"Mar Rend"-"Mar Desp" AS "Mar Saldo",
"Abr Rend"-"Abr Desp" AS "Abr Saldo"
FROM
( SELECT *,
COALESCE("Jan cartão",'0')+COALESCE("jan fixos",'0')+COALESCE("jan mercantil",'0')+COALESCE("jan outros",'0') AS "Jan Desp",
COALESCE("Fev cartao",'0')+COALESCE("fev fixos",'0')+COALESCE("fev mercantil",'0')+COALESCE("fev outros",'0') AS "Fev Desp",
COALESCE("mar cartao",'0')+COALESCE("mar fixos",'0')+COALESCE("mar mercantil",'0')+COALESCE("mar outros",'0') AS "Mar Desp",
COALESCE("abr cartao",'0')+COALESCE("abr fixos",'0')+COALESCE("abr mercantil",'0')+COALESCE("abr outros",'0') AS "Abr Desp",
COALESCE("jan salario",'0')+COALESCE("jan outras_rendas",'0') AS "Jan Rend",
COALESCE("fev salario",'0')+COALESCE("fev outras_rendas",'0') AS "Fev Rend",
COALESCE("mar salario",'0')+COALESCE("mar outras_rendas",'0') AS "Mar Rend",
COALESCE("abr salario",'0')+COALESCE("abr outras_rendas",'0') AS "Abr Rend"
FROM 
( SELECT SUM( "valor" ) AS "Jan cartão" FROM "gastos_cartao" WHERE "mes_referef" = '0' ),
 ( SELECT SUM( "valor" ) AS "Fev cartao" FROM "gastos_cartao" WHERE "mes_referef" = '1' ),
 ( SELECT SUM( "valor" ) AS "mar cartao" FROM "gastos_cartao" WHERE "mes_referef" = '2' ),
 ( SELECT SUM( "valor" ) AS "abr cartao" FROM "gastos_cartao" WHERE "mes_referef" = '3' ),
 ( SELECT SUM( "valor" ) AS "mai cartao" FROM "gastos_cartao" WHERE "mes_referef" = '4' ),
( SELECT SUM( "valor" ) AS "jan fixos" FROM "inserir_gastos_fixo" WHERE MONTH( "data" ) = '01' ),
 ( SELECT SUM( "valor" ) AS "fev fixos" FROM "inserir_gastos_fixo" WHERE MONTH( "data" ) = '02' ),
 ( SELECT SUM( "valor" ) AS "mar fixos" FROM "inserir_gastos_fixo" WHERE MONTH( "data" ) = '03' ),
 ( SELECT SUM( "valor" ) AS "abr fixos" FROM "inserir_gastos_fixo" WHERE MONTH( "data" ) = '04' ),
 ( SELECT SUM( "valor" ) AS "jan mercantil" FROM "gasto_dinheiro" WHERE MONTH( "Data" ) = '01' AND "area" = '101' ),
 ( SELECT SUM( "valor" ) AS "fev mercantil" FROM "gasto_dinheiro" WHERE MONTH( "Data" ) = '02' AND "area" = '101' ),
 ( SELECT SUM( "valor" ) AS "mar mercantil" FROM "gasto_dinheiro" WHERE MONTH( "Data" ) = '03' AND "area" = '101' ),
 ( SELECT SUM( "valor" ) AS "abr mercantil" FROM "gasto_dinheiro" WHERE MONTH( "Data" ) = '04' AND "area" = '101' ),
 ( SELECT SUM( "valor" ) AS "jan outros" FROM "gasto_dinheiro" WHERE NOT "area" = '101' AND MONTH( "Data" ) = '01' ),
 ( SELECT SUM( "valor" ) AS "fev outros" FROM "gasto_dinheiro" WHERE NOT "area" = '101' AND MONTH( "Data" ) = '02' ),
 ( SELECT SUM( "valor" ) AS "mar outros" FROM "gasto_dinheiro" WHERE NOT "area" = '101' AND MONTH( "Data" ) = '03' ),
 ( SELECT SUM( "valor" ) AS "abr outros" FROM "gasto_dinheiro" WHERE NOT "area" = '101' AND MONTH( "Data" ) = '04' ),
 ( SELECT SUM( "valor" ) AS "jan salario" FROM "redimento_mes" WHERE MONTH( "data" ) = '01' AND "id_rendimento" = '0' ),
 ( SELECT SUM( "valor" ) AS "fev salario" FROM "redimento_mes" WHERE MONTH( "data" ) = '02' AND "id_rendimento" = '0' ),
 ( SELECT SUM( "valor" ) AS "mar salario" FROM "redimento_mes" WHERE MONTH( "data" ) = '03' AND "id_rendimento" = '0' ),
 ( SELECT SUM( "valor" ) AS "abr salario" FROM "redimento_mes" WHERE MONTH( "data" ) = '04' AND "id_rendimento" = '0' ),
( SELECT SUM( "valor" ) AS "jan outras_rendas" FROM "redimento_mes" WHERE NOT "id_rendimento" = '0' AND MONTH( "data" ) = '01' ),
 ( SELECT SUM( "valor" ) AS "fev outras_rendas" FROM "redimento_mes" WHERE NOT "id_rendimento" = '0' AND MONTH( "data" ) = '02' ),
 ( SELECT SUM( "valor" ) AS "mar outras_rendas" FROM "redimento_mes" WHERE NOT "id_rendimento" = '0' AND MONTH( "data" ) = '03' ),
 ( SELECT SUM( "valor" ) AS "abr outras_rendas" FROM "redimento_mes" WHERE NOT "id_rendimento" = '0' AND MONTH( "data" ) = '04' ) )

Aqui funcionou perfeitamente, apenas tive que inserir as funções COALESCE() para tratar os valores NULL.

Detalhe: Libreoffice 4.0.1.2 - Ubuntu 12.04 LTS

At.te,

Grafeno (Tone)

Obrigadão mesmo Grafeno, ta funcionando direitinho. valeu.

De nada professor_estudante! É um sempre um prazer ajudar…

Creio que fica mais fácil se você criar uma tabela mês e depois referenciar o month(data).
Para fazer a planilha com mês na horizontal use uma tabela dinâmica.

Tabela dinâmica no Base !!!