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 

Ajuda com Select no Firebird

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


Registrado: Sexta-Feira, 18 de Abril de 2008
Mensagens: 69

MensagemEnviada: Sex Mai 25, 2018 11:48 am    Assunto: Ajuda com Select no Firebird Responder com Citação

Salve, pessoal.

Fiz a query abaixo para selecionar os dados da tabela Vendas. Dentro da query, fiz uma subquery utilizando o Case para caso o cliente seja pessoa física, peque o nome na tabela pessoa física, caso seja pessoa jurídica, pegue o nome na tabela pessoa jurídica.

A query funciona de boa. Mas quando preciso pesquisar pelo "nome" e ordenar por esse "nome na no Where, o bd diz que não consegue encontrar a coluna "cliente" que eu criei no Case.

Abaixo vai a query:

select
vendas.sequencia_venda,
vendas.id_empresa,
empresas.nome_fantasia,
vendas.id_pessoa,
case substring(vendas.id_pessoa from 1 for 2)
when 'PJ' then (select pessoa_juridica.nome_fantasia from pessoa_juridica where pessoa_juridica.id_pessoa = vendas.id_pessoa)
when 'PF' then (select pessoa_fisica.nome from pessoa_fisica where pessoa_fisica.id_pessoa = vendas.id_pessoa)
end as cliente
,
vendas.id_vendedor,
vendedores.nome_vendedor,
vendas.numero_nota_cupom_fiscal,
vendas.data_venda,
vendas.data_entrega,
vendas.hora_entrega,
vendas.status_venda,
vendas_produtos.sequencia_vendas_produtos,
vendas_produtos.codigo_produto,
produtos.nome,
vendas_produtos.status_produto,
vendas_produtos.quantidade_vendida,
vendas_produtos.valor_produto,
vendas_produtos.valor_qtd_vendida,
vendas_produtos.quantidade_devolvida,
vendas_produtos.valor_devolucao,
vendas_produtos.quantidade_desconto,
vendas_produtos.valor_desconto,
vendas_produtos.quantidade_bonificacao,
vendas_produtos.valor_bonificacao,
vendas_produtos.valor_comissao,
vendas.valor_frete,
vendas.observacao,
vendas.total_devolucao,
vendas.total_desconto,
vendas.total_bonificacao,
vendas.total_comissao,
vendas.valor_venda,
vendas.valor_total,
vendas.quantidade_itens
from
vendas
inner join empresas on
vendas.id_empresa = vendas.id_empresa
inner join vendedores on
vendas.id_empresa = vendas.id_empresa
inner join vendas_produtos on
vendas.sequencia_venda = vendas_produtos.sequenciav_t_vprodutos
inner join produtos on
vendas_produtos.codigo_produto = produtos.codigo
where
cliente like('T%')
order by cliente

Se alguém puder ajuda, agradeço. Abraços.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Sex Mai 25, 2018 12:21 pm    Assunto: Responder com Citação

Boa tarde,

Acho que uma alternativa seria o uso de uma CTE. Ex:

Código:
with CTE_Vendas as
(
    -- query sem o filtro por nome e sem o Order By
)

select * from CTE_Vendas
where cliente like 'T%'
order by cliente


Espero que ajude
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