Aggelos Novato
Registrado: Sexta-Feira, 18 de Abril de 2008 Mensagens: 69
|
Enviada: Sex Mai 25, 2018 11:48 am Assunto: Ajuda com Select no Firebird |
|
|
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. |
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sex Mai 25, 2018 12:21 pm Assunto: |
|
|
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 |
|