none
Erro em Query SQL Server 2005 com INNER JOIN RRS feed

  • Pergunta

  • Por favor preciso de ajuda, estou com erro, quando incluo o INNER JOIN no select do C1, conforme abaixo, alguem consegue ver onde esta o ERRO.

    Assim como esta funciona,(pois a linha esta como comentário

    Obrigado

    Sergio

    --(INNER JOIN MOEDA ON CONTA_CORRENTE.MDA_CC = MOEDA.COD_MDA)

    --C1.DE_MDA,

    (SELECT C1.PK_CC,C1.DATA_CC, C1.MDA_CC,'' as Histo, '' as Debito,'' as Credito,

    SALDOP_CC,SALDOT_CC,SDO_BCO_CC FROM CONTA_CORRENTE

    --(INNER JOIN MOEDA ON CONTA_CORRENTE.MDA_CC = MOEDA.COD_MDA)

    AS C1

    INNER JOIN

    (SELECT MDA_CC,MAX(DATA_CC) AS DTMAX,MAX(PK_CC) AS PKMAX FROM CONTA_CORRENTE

    WHERE FILIAL_CC=5 GROUP BY MDA_CC) AS C2

    ON C1.DATA_CC=C2.DTMAX

    AND C1.MDA_CC=C2.MDA_CC

    AND C1.PK_CC=C2.PKMAX)

    EXCEPT

    (SELECT C3.PK_CC,C3.DATA_CC,C3.MDA_CC,'' as Histo, '' as Debito,'' as Credito,

    C3.SALDOP_CC,C3.SALDOT_CC,C3.SDO_BCO_CC FROM CONTA_CORRENTE AS C3

    Where

    C3.DATA_CC>='2008-11-24'

    AND C3.DATA_CC<='2008-11-24'

    AND C3.FILIAL_CC=5)

    terça-feira, 25 de novembro de 2008 15:30

Todas as Respostas

  • Boa Tarde Sérgio,

     

    Ajudaria se você postasse a mensagem de erro, mas considerando que você está com o operador EXCEPT presumo que você está utilizando o SQL Server 2005 ou superior. Recomendaria abandonar a utilização de subqueries Derived Table e partir para o uso de Common Table Expressions (CTEs) que além de mais organizado possui recursos que não são possíveis através de subqueries. Segue um exemplo de substituição:

     

    Code Snippet

    -- Ao invés de

    SELECT * FROM

    (SELECT Complicado, Difícil de Aninhar + Entender FROM Tabelas) AS C1

    INNER JOIN

    (SELECT Complicado, Difícil de Aninhar + Entender FROM Tabelas) AS C2

     

    -- Use

    WITH C1 AS (SELECT Complicado, Difícil de Aninhar + Entender FROM Tabelas),

    C2 AS (SELECT Complicado, Difícil de Aninhar + Entender FROM Tabelas)

     

    SELECT * FROM C1 INNER JOIN C2 ON C1.Campo(s) = C2.Campo(s)

     

    Se estiver interessado em aprender mais sobre CTEs, recomendo o artigo abaixo:

     

    SQL Server 2005 New Features: Common Table Expressions (CTEs)

    http://www.plugmasters.com.br/sys/materias/549/1/SQL-Server-2005-New-Features%3A-Common-Table-Expressions-%28CTEs%29

     

    [ ]s,

     

    Gustavo

    terça-feira, 25 de novembro de 2008 16:26
  • Sérgio,

     

    Concordo com o Gustavo, post o erro!!!

    terça-feira, 25 de novembro de 2008 17:31