Select Sum Sql - Firebird

SQL

Delphi

Firebird

11/10/2021

Galera esse select está trazendo múltiplos valores:

select m.id,
(select sum(m.vlr_operacao) from mov_caixa m where m.tipo_ent_mov = 'CREDITO' AND M.data = '08.10.2021')
-
(select sum(m.vlr_operacao) from mov_caixa m where m.tipo_ent_mov = 'DEBITO' AND M.data = '08.10.2021') as VLR_TOTAL
from
mov_caixa m
group by m.id, m.vlr_operacao;


Alguem poderia me ajudar? No caso queria somente um resultado.
Jefferson

Jefferson

Curtidas 0

Melhor post

Emerson Nascimento

Emerson Nascimento

15/10/2021

select
  data,
  sum(case when tipo_ent_mov = 'CREDITO' then vlr_operacao else 0 end) credito,
  sum(case when tipo_ent_mov = 'DEBITO' then vlr_operacao else 0 end) debito,
  sum(case when tipo_ent_mov = 'CREDITO' then vlr_operacao else 0 end) -
  sum(case when tipo_ent_mov = 'DEBITO' then vlr_operacao else 0 end) saldo
from
  mov_caixa
where
  data = '08.10.2021'
group by
  data
GOSTEI 1

Mais Respostas

Jefferson

Jefferson

11/10/2021

CREATE GENERATOR GEN_MOV_CAIXA_ID;

CREATE TABLE MOV_CAIXA (
ID INTEGER NOT NULL,
MOVIMENTACAO VARCHAR(60),
TIPO_MOV VARCHAR(2),
VLR_OPERACAO DECIMAL(12,2),
USUARIO VARCHAR(10),
DATA TIMESTAMP,
FORM_PAGAMENTO VARCHAR(20),
ID_OP INTEGER,
NOME_CLIENTE VARCHAR(65),
ID_FUNCIONARIO INTEGER,
NOM_FUNCIONARIO VARCHAR(40),
TIPO_ENT_MOV VARCHAR(7)
);




DADOS:

INSERT INTO MOV_CAIXA (ID, MOVIMENTACAO, TIPO_MOV, VLR_OPERACAO, USUARIO, DATA, FORM_PAGAMENTO, ID_OP, NOME_CLIENTE, ID_FUNCIONARIO, NOM_FUNCIONARIO, TIPO_ENT_MOV)
VALUES (12, 'LANCAMENTO SUPRIMENTO', 'LC', 2, 'ADM', '2021-10-08 00:00:00', 'DINHEIRO', 4, NULL, 1, 'ADM', 'CREDITO');
INSERT INTO MOV_CAIXA (ID, MOVIMENTACAO, TIPO_MOV, VLR_OPERACAO, USUARIO, DATA, FORM_PAGAMENTO, ID_OP, NOME_CLIENTE, ID_FUNCIONARIO, NOM_FUNCIONARIO, TIPO_ENT_MOV)
VALUES (13, 'LANCAMENTO SUPRIMENTO', 'LC', 10, 'ADM', '2021-10-08 00:00:00', 'CARTAO CREDITO', 5, NULL, 1, 'ADM', 'CREDITO');
INSERT INTO MOV_CAIXA (ID, MOVIMENTACAO, TIPO_MOV, VLR_OPERACAO, USUARIO, DATA, FORM_PAGAMENTO, ID_OP, NOME_CLIENTE, ID_FUNCIONARIO, NOM_FUNCIONARIO, TIPO_ENT_MOV)
VALUES (14, 'LANCAMENTO SUPRIMENTO', 'LC', 5, 'ADM', '2021-10-08 00:00:00', 'CARTAO CREDITO', 6, NULL, 1, 'ADM', 'CREDITO');
INSERT INTO MOV_CAIXA (ID, MOVIMENTACAO, TIPO_MOV, VLR_OPERACAO, USUARIO, DATA, FORM_PAGAMENTO, ID_OP, NOME_CLIENTE, ID_FUNCIONARIO, NOM_FUNCIONARIO, TIPO_ENT_MOV)
VALUES (15, 'LANCAMENTO SANGRIA', 'LD', 4, 'ADM', '2021-10-08 00:00:00', 'DINHEIRO', 6, NULL, 1, 'ADM', 'DEBITO');
INSERT INTO MOV_CAIXA (ID, MOVIMENTACAO, TIPO_MOV, VLR_OPERACAO, USUARIO, DATA, FORM_PAGAMENTO, ID_OP, NOME_CLIENTE, ID_FUNCIONARIO, NOM_FUNCIONARIO, TIPO_ENT_MOV)
VALUES (16, 'LANCAMENTO SANGRIA', 'LD', 9, 'ADM', '2021-10-08 00:00:00', 'CARTAO CREDITO', 7, NULL, 1, 'ADM', 'DEBITO');
INSERT INTO MOV_CAIXA (ID, MOVIMENTACAO, TIPO_MOV, VLR_OPERACAO, USUARIO, DATA, FORM_PAGAMENTO, ID_OP, NOME_CLIENTE, ID_FUNCIONARIO, NOM_FUNCIONARIO, TIPO_ENT_MOV)
VALUES (17, 'VENDA APRAZO', 'VP', 138, 'ADM', '2021-10-08 00:00:00', 'DINHEIRO', 300, '3;ROGERIO ROBERIO DE SOUZA', 6, 'DANIELLA DA SILVA COSTA DE SOUZA', 'CREDITO');
INSERT INTO MOV_CAIXA (ID, MOVIMENTACAO, TIPO_MOV, VLR_OPERACAO, USUARIO, DATA, FORM_PAGAMENTO, ID_OP, NOME_CLIENTE, ID_FUNCIONARIO, NOM_FUNCIONARIO, TIPO_ENT_MOV)
VALUES (18, 'VENDA AVISTA', 'VA', 96, 'ADM', '2021-10-08 00:00:00', 'DINHEIRO', 301, '2;MAYCON DOUGLAS CAVALCANTE DE SOUZA', 4, 'JEFFERSON DOUGLAS CAVALCANTE DE SOUZA', 'CREDITO');

COMMIT WORK;
GOSTEI 0
Jefferson

Jefferson

11/10/2021

Alguém que possa me ajudar?
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

11/10/2021

tente algo assim:
select
  data,
  sum(case when tipo_ent_mov = 'CREDITO' then vlr_operacao else 0 end) credito,
  sum(case when tipo_ent_mov = 'DEBITO' then vlr_operacao else 0 end) debito
from
  mov_caixa
group by
  data

e, para a data desejada:
select
  data,
  sum(case when tipo_ent_mov = 'CREDITO' then vlr_operacao else 0 end) credito,
  sum(case when tipo_ent_mov = 'DEBITO' then vlr_operacao else 0 end) debito
from
  mov_caixa
where
  data = '08.10.2021'
group by
  data

GOSTEI 0
Jefferson

Jefferson

11/10/2021

Boa noite Emerson!

Ficou bem melhor a estrutura do select, muito obrigado!

Só uma dúvida? No primeiro select do post, o select contém um sinal de (-), é possivél fazer essa operação de cálculo em apenas um select?
GOSTEI 0
Jefferson

Jefferson

11/10/2021

Obrigado! Você é o cara, sei nem como agradecer...
GOSTEI 0
POSTAR