Fórum consulta sql complicadississima #49613
27/02/2005
0
FROM FINANCEIRO FI Case When(FI.TIPO_LANCAMENTO = ´R´) THEN ´LEFT JOIN CLIENTE´ When(FI.TIPO_LANCAMENTO = ´P´) THEN ´LEFT JOIN FORNECEDOR´ CL ON FI.ID_CLIENTE = When(FI.TIPO_LANCAMENTO = ´R´) THEN ´CL.ID_CLIENTE´ When(FI.TIPO_LANCAMENTO = ´P´) THEN ´CL.ID_FORNECEDOR´ LEFT JOIN LOJA LJ ON FI.ID_LOJA = LJ.ID_LOJA LEFT JOIN BANCO BC ON FI.ID_PORTADOR = BC.ID_BANCO LEFT JOIN PLANO_DE_CONTAS PCC ON FI.ID_CONTA_CREDITO = PCC.ID_PLANO LEFT JOIN OPERACAO_FISCAL OPF ON FI.ID_OPERACAO_FISCAL = OPF.ID_OPERACAO_FISCAL LEFT JOIN CENTRO_DE_CUSTO CC ON FI.ID_CENTRO_DE_CUSTO = CC.ID_CENTRO_DE_CUSTO
LEFT JOIN PLANO_DE_CONTAS PCD ON FI.ID_CONTA_DEBITO = PCD.ID_PLANO
**** PRECISO FAZER UM LIVRO CAIXA E MINHA TABELA FINANCEIRA E UMA SO A UNICA COISA Q DIFERENCIA E A STRING P = PAGAR E R = RECEBER POREM UMA TEM Q LOCALIZAR O FORNECEDOR E OUTRA O CLIENTE E MOSTRAR EM UMA TABELA SO AI VEM O PROBLEMA ME FALARAM DO CASE WHEN MAS ACHO Q NAO TIVE SUCESSO POIS NAO CONSEGUI UTILIZAR A SQL ESTA ACIMA ACHE POR FAVOR O DEFEITO E ME RETORNE PRECISO D+ DESSA AJUDA AGRDECO BYE
O SITE JA RESOLVEU MUITA COISA PRA MIM E TENHO CERTEZA Q ESSA OS FERAZ DA I MATA A PAU
Eltontlms
Curtir tópico
+ 0Posts
27/02/2005
Gandalf.nho
Texto do tópico em maiúsculas
Para maiores esclarecimentos pode mandar-me uma [url=http://delphiforum.icft.com.br/forum/privmsg.php?mode=post&u=8378]Mensagem Particular[/url].
Gostei + 0
27/02/2005
Adilsond
SELECT FI.*, LJ.NOME_RAZAO AS NOME_LOJA, LJ.COD_FILIAL AS FILIAL, BC.DESCRICAO AS NOME_BANCO, CC.DESCRICAO AS NOME_CUSTO, PCC.NOME_CONTA AS NOME_CONTA_CREDITO, PCD.NOME_CONTA AS NOME_CONTA_DEBITO, PCC.CONTA_REDUZIDA AS CONTA_REDUZ_CREDITO, PCD.CONTA_REDUZIDA AS CONTA_REDUZ_DEBITO, PCC.CONTA AS CONTA_CREDITO, PCD.CONTA AS CONTA_DEBITO, CL.NOME_RAZAO AS NOME_CLIENTE, CL.CNPF_CNPJ AS CNPF_CNPJ_CLIENTE, OPF.DESCRICAO AS NOME_OPERACAO_FISCAL, OPF.CODIGO_OPERACAO_FISCAL AS CODIGO_OPERACAO_FISCAL FROM FINANCEIRO FI LEFT JOIN CLIENTE CL ON FI.ID_CLIENTE = CL.ID_CLIENTE LEFT JOIN LOJA LJ ON FI.ID_LOJA = LJ.ID_LOJA LEFT JOIN BANCO BC ON FI.ID_PORTADOR = BC.ID_BANCO LEFT JOIN PLANO_DE_CONTAS PCC ON FI.ID_CONTA_CREDITO = PCC.ID_PLANO LEFT JOIN OPERACAO_FISCAL OPF ON FI.ID_OPERACAO_FISCAL = OPF.ID_OPERACAO_FISCAL LEFT JOIN CENTRO_DE_CUSTO CC ON FI.ID_CENTRO_DE_CUSTO = CC.ID_CENTRO_DE_CUSTO LEFT JOIN PLANO_DE_CONTAS PCD ON FI.ID_CONTA_DEBITO = PCD.ID_PLANO WHERE FI.TIPO_LANCAMENTO = ´R´ UNION ALL SELECT FI.*, LJ.NOME_RAZAO, LJ.COD_FILIAL, BC.DESCRICAO, CC.DESCRICAO, PCC.NOME_CONTA, PCD.NOME_CONTA, PCC.CONTA_REDUZIDA, PCD.CONTA_REDUZIDA, PCC.CONTA, PCD.CONTA, FR.NOME_RAZAO, FR.CNPF_CNPJ, OPF.DESCRICAO, OPF.CODIGO_OPERACAO_FISCAL FROM FINANCEIRO FI LEFT JOIN FORNECEDOR´ FR ON FI.ID_CLIENTE = FR.ID_FORNECEDOR LEFT JOIN LOJA LJ ON FI.ID_LOJA = LJ.ID_LOJA LEFT JOIN BANCO BC ON FI.ID_PORTADOR = BC.ID_BANCO LEFT JOIN PLANO_DE_CONTAS PCC ON FI.ID_CONTA_CREDITO = PCC.ID_PLANO LEFT JOIN OPERACAO_FISCAL OPF ON FI.ID_OPERACAO_FISCAL = OPF.ID_OPERACAO_FISCAL LEFT JOIN CENTRO_DE_CUSTO CC ON FI.ID_CENTRO_DE_CUSTO = CC.ID_CENTRO_DE_CUSTO LEFT JOIN PLANO_DE_CONTAS PCD ON FI.ID_CONTA_DEBITO = PCD.ID_PLANO WHERE FI.TIPO_LANCAMENTO = ´P´ ORDER BY Nr. das colunas
Gostei + 0
01/03/2005
Delphi32
SELECT FI.*, LJ.NOME_RAZAO AS NOME_LOJA, LJ.COD_FILIAL AS FILIAL, BC.DESCRICAO AS NOME_BANCO, CC.DESCRICAO AS NOME_CUSTO, PCC.NOME_CONTA AS NOME_CONTA_CREDITO, PCD.NOME_CONTA AS NOME_CONTA_DEBITO, PCC.CONTA_REDUZIDA AS CONTA_REDUZ_CREDITO, PCD.CONTA_REDUZIDA AS CONTA_REDUZ_DEBITO, PCC.CONTA AS CONTA_CREDITO, PCD.CONTA AS CONTA_DEBITO, (CASE FI.ID_CLIENTE WHEN ´P´ THEN FR.NOME_RAZAO ELSE CL.NOME_RAZAO END) AS NOME_CLIENTE, (CASE FI.ID_CLIENTE WHEN ´P´ THEN FR.CNPF_CNPJ ELSE CL.CNPF_CNPJ END) AS CNPF_CNPJ_CLIENTE, OPF.DESCRICAO AS NOME_OPERACAO_FISCAL, OPF.CODIGO_OPERACAO_FISCAL AS CODIGO_OPERACAO_FISCAL FROM FINANCEIRO FI LEFT JOIN CLIENTE CL ON FI.ID_CLIENTE = CL.ID_CLIENTE LEFT JOIN FORNECEDOR´ FR ON FI.ID_CLIENTE = FR.ID_FORNECEDOR LEFT JOIN LOJA LJ ON FI.ID_LOJA = LJ.ID_LOJA LEFT JOIN BANCO BC ON FI.ID_PORTADOR = BC.ID_BANCO LEFT JOIN PLANO_DE_CONTAS PCC ON FI.ID_CONTA_CREDITO = PCC.ID_PLANO LEFT JOIN OPERACAO_FISCAL OPF ON FI.ID_OPERACAO_FISCAL = OPF.ID_OPERACAO_FISCAL LEFT JOIN CENTRO_DE_CUSTO CC ON FI.ID_CENTRO_DE_CUSTO = CC.ID_CENTRO_DE_CUSTO LEFT JOIN PLANO_DE_CONTAS PCD ON FI.ID_CONTA_DEBITO = PCD.ID_PLANO
É importante lembrar que em ambos os casos o campo NOME_RAZAO da tabela de clientes e fornecedores devem ser do mesmo tipo e tamanho assim como os campos CNPF_CNPJ das mesmas tabelas. Caso eles não sejam do mesmo tipo e tamanho bastaria colocar o CASE dentro de um CAST.
Até!
Gostei + 0
10/03/2005
As-mad
Gostei + 0
10/03/2005
Afarias
Não.
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)