ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

group by com subselect

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
tchadrack
Novato
Novato


Registrado: Terça-Feira, 22 de Novembro de 2016
Mensagens: 32

MensagemEnviada: Qua Dez 28, 2016 5:07 pm    Assunto: group by com subselect Responder com Citação

Simplificando, tenho 2 tabelas, 1 com contratos, e outra com lançamentos

Eu gostaria de saber como fazer uma consulta que retorne um resultado Como este:

contrato1 .... ... .. ..
lcto 143... R$ 23,42
lcto 223... R$ -12,54
lcto 331... R$ 11,20
Total Contrato 1 R$ 22,08
contrato 2 ............
lcto 234 R$ 10,00
lcto 432 R$ 20,00
lcto 231 R$ 15,00
Total Contrato 2 R$ 45,00

Total Geral Contratos ---R$ xxxxxx

Estou usando FireDac e delphi Xe7

obrigado
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9100
Localização: Sinop-MT

MensagemEnviada: Qua Dez 28, 2016 5:47 pm    Assunto: Responder com Citação

veja um exemplo:

Código:
SELECT UF, DESCRICAO, COUNT(UF)
FROM cidades
GROUP BY uf, descricao
WITH ROLLUP


o q faz a sumarizacao é o ROLLUP. da uma pesquisa sobre ele
_________________
<b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
tchadrack
Novato
Novato


Registrado: Terça-Feira, 22 de Novembro de 2016
Mensagens: 32

MensagemEnviada: Qua Dez 28, 2016 10:26 pm    Assunto: Responder com Citação

joemil escreveu:
veja um exemplo:

Código:
SELECT UF, DESCRICAO, COUNT(UF)
FROM cidades
GROUP BY uf, descricao
WITH ROLLUP


o q faz a sumarizacao é o ROLLUP. da uma pesquisa sobre ele


Mas perceba que tem duas tabelas, uma com lançamentos (entradas e saídas)
outra com os contratos.

O resultado que procuro é mais ou menos isso:

contrato lancamento entrada saida valor
1
|____________lcto x 10 1 9
|____________lcto xx 1 0 1
total do contrato 1 -------------------------------- 10

2
|____________lcto yx 11 1 10
|____________lcto yxyx 1 2 -1
total do contrato 2 -------------------------------- 9
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9100
Localização: Sinop-MT

MensagemEnviada: Qui Dez 29, 2016 8:29 am    Assunto: Responder com Citação

eu te dei um exemplo, agora so adaptar para as suas necessidades.

posta o select q vc ta usando pra facilitar
_________________
<b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
tchadrack
Novato
Novato


Registrado: Terça-Feira, 22 de Novembro de 2016
Mensagens: 32

MensagemEnviada: Qui Dez 29, 2016 5:09 pm    Assunto: Responder com Citação

joemil escreveu:
eu te dei um exemplo, agora so adaptar para as suas necessidades.

posta o select q vc ta usando pra facilitar



Código:

SQL.Add('select clcimo.contrato,cllan.lcto as lancamento,cllan.vencto,clttl.descr,');
SQL.Add('case ctacre when ''P'' then case stbonif when ''B'' then case cllan.tipo when 1 then cllan.valor - cllan.vldesc else cllan.valor end else cllan.valor end else 0 end as  credito,');
SQL.Add('case cllan.tipo when 1 then cllan.vlrcomis end as comissao,');
SQL.Add('case ctadeb when ''P'' then cllan.valor end as debito,');
SQL.Add('case ctacre when ''P'' then (case stbonif when ''B'' then case cllan.tipo when 1 then (cllan.valor - cllan.vldesc - cllan.vlrcomis) else cllan.valor - cllan.vlrcomis end else cllan.valor - cllan.vlrcomis end) else -cllan.valor end as total');
SQL.Add(' from clcimo');
SQL.Add(' join cllan on cllan.contr=clcimo.contrato and cllan.situ=0 and ctaloc=0 and vencto < :dataatual');
SQL.Add(' join clttl on clttl.codigo=cllan.tipo');
SQL.Add(' where clcimo.locado = :locador and clcimo.temcontr = 1');
SQL.Add(' order by clcimo.contrato');
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
douglas_fc
Profissional
Profissional


Registrado: Quarta-Feira, 26 de Mai de 2010
Mensagens: 672

MensagemEnviada: Seg Jan 09, 2017 10:02 am    Assunto: Responder com Citação

bom dia,

melhor vc postar a estrutura das suas tabelas para melhor entendimento!
_________________
O conhecimento só tem valor quando compartilhado!

Douglas Sousa
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
tchadrack
Novato
Novato


Registrado: Terça-Feira, 22 de Novembro de 2016
Mensagens: 32

MensagemEnviada: Qua Jan 11, 2017 8:31 am    Assunto: Responder com Citação

douglas_fc escreveu:
bom dia,

melhor vc postar a estrutura das suas tabelas para melhor entendimento!


Não precisa mais, já resolvi, Obrigado
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB