0

大家好,我在转换在 ON 子句中有一组子查询的查询时遇到了一些麻烦。初始代码是在 SQL Server 中创建的,我已更改为在 Vertica 上工作。

这是代码:

    SELECT
    DISTINCT DocFinanceiro.AutoId AS AutoId,
    DocFinanceiro.Classe AS ClasseDoc,
    EspecPrestador.Seq AS Sequencia,
    PrestadorServico.Codigo AS CodigoPrest,
    PessoaPrest.Nome AS NomePrestador,
    DocFinanceiro.CompFinanceira AS CompFinanceira,
    EspecialidadeServico.Nome AS Especialidade,
    ClassePrestador.Nome AS ClsPrestador,
    RegistroPessoa.Numero AS RegistroINSS,
    RegistroPessoa.Tipo AS TipoRegPessoa,
    DocFinanceiro.DataVencimento AS DataVencimentoDocFin
    FROM DocFinanceiro 
    INNER JOIN ClasseDocFinanceiro
    ON DocFinanceiro.Classe = ClasseDocFinanceiro.Codigo
    INNER JOIN ItemFinanceiro  ON DocFinanceiro.AutoId = ItemFinanceiro.Documento
    INNER JOIN ClasseApropriacaoFinan
    ON ItemFinanceiro.ClasseApro = ClasseApropriacaoFinan.Codigo
    INNER JOIN ContratoFinanceiro
    ON DocFinanceiro.ContratoFinanceiro = ContratoFinanceiro.AutoId
    INNER JOIN Pessoa  ON ContratoFinanceiro.Pessoa = Pessoa.AutoId
    INNER JOIN GeradorItemFinan
    ON ItemFinanceiro.AutoId = GeradorItemFinan.ItemFinan
    INNER JOIN PrestadorServico
    ON ContratoFinanceiro.AutoId = PrestadorServico.ContratoFinanceiro
    INNER JOIN Pessoa PessoaPrest  ON PrestadorServico.Pessoa = PessoaPrest.AutoId
    INNER JOIN TipoValorFinan
    ON ClasseApropriacaoFinan.TipoValor = TipoValorFinan.Codigo
    INNER JOIN ClasseContratoFinanceiro
    ON ContratoFinanceiro.Classe = ClasseContratoFinanceiro.AutoId
    INNER JOIN ClassePrestador
    ON PrestadorServico.Classe = ClassePrestador.Codigo
    LEFT JOIN EspecPrestador
    ON EspecPrestador.Prestador = PrestadorServico.AutoId
    AND EspecPrestador.Seq = 1
    LEFT JOIN EspecialidadeServico
    ON EspecialidadeServico.AutoId = EspecPrestador.Especialidade
    LEFT JOIN RegistroPessoa ON PessoaPrest.AutoId = RegistroPessoa.Pessoa
--This is the part where i getr stuck    
AND
    (
       RegistroPessoa.AutoId =
       (
          SELECT
          RegistroPessoa.AutoId
          FROM RegistroPessoa
          WHERE RegistroPessoa.Pessoa = PessoaPrest.Autoid
          AND (RegistroPessoa.Tipo = 1 OR RegistroPessoa.Tipo = 1) order by 1  limit 1
       )
    )
--until here
    WHERE (GeradorItemFinan.TipoGerador = 1)
    AND (DocFinanceiro.CompFinanceira = 1)
    AND (PrestadorServico.AutoId = 1)
    AND DocFinanceiro.CompSeq = 1
    AND (DocFinanceiro.Numero IS NOT NULL)
    AND (DocFinanceiro.Classe <> 1)
    ORDER BY AutoId, Sequencia
    ;

如果有人有任何想法,那就太好了!

4

1 回答 1

0

尝试更换

RegistroPessoa.AutoId = (选择...)

到 RegistroPessoa.AutoId IN (SELECT...)

并为表短名称使用别名

于 2013-05-28T14:04:08.677 回答