添加子查询后无法访问表

时间:2017-09-27 19:56:14

标签: sql tsql

我有这个查询

SELECT * FROM (
SELECT
TT.TAXAMOUNTCUR,
TT.TAXORIGIN,
TT.VOUCHER,
TT.TAXITEMGROUP,
TT.TAXCODE,
TT.SOURCEBASEAMOUNTCUR,
TT.SOURCETAXAMOUNTCUR,
TTGJAERIVA.TAXTRANSRELATIONSHIP,
TTGJAERIVA.GENERALJOURNALACCOUNTENTRY,
TTGJAERIVA.LEDGERDIMENSION,
GJAERIVA.TEXT,
GJAERIVA.LEDGERDIMENSION AS LEDGERDIMENSIONGAE,
GJAERIVA.POSTINGTYPE
FROM TAXTRANS TT 
INNER MERGE JOIN TAXTRANSGENERALJOURNALACCOUNTENTRY TTGJAERIVA ON TTGJAERIVA.TAXTRANS = TT.RECID
INNER MERGE JOIN GENERALJOURNALACCOUNTENTRY GJAERIVA ON TTGJAERIVA.GENERALJOURNALACCOUNTENTRY = GJAERIVA.RECID 
AND GJAERIVA.POSTINGTYPE IN( 14,236,71,41) 
AND TT.TRANSDATE <= '"+ @[User::fecha] +"'
WHERE   
(TT.TAXORIGIN <> 11 AND TT.TRANSDATE BETWEEN  '"+ @[User::fecha_ini] +"' AND  '"+ @[User::fecha] +"') OR (TT.TAXORIGIN = 11 AND TT.TRANSDATE BETWEEN '"+ @[User::fecha_ini] +"' AND  '"+@[User::fecha] +"' )) AS T

它完美无缺

但是现在结束之后我想设置一个左边的合并连接TT谁是我的桌子,所以我的查询是这样的:

SELECT * FROM (
SELECT
TT.TAXAMOUNTCUR,
TT.TAXORIGIN,
TT.VOUCHER,
TT.TAXITEMGROUP,
TT.TAXCODE,
TT.SOURCEBASEAMOUNTCUR,
TT.SOURCETAXAMOUNTCUR,
TTGJAERIVA.TAXTRANSRELATIONSHIP,
TTGJAERIVA.GENERALJOURNALACCOUNTENTRY,
TTGJAERIVA.LEDGERDIMENSION,
GJAERIVA.TEXT,
GJAERIVA.LEDGERDIMENSION AS LEDGERDIMENSIONGAE,
GJAERIVA.POSTINGTYPE
FROM TAXTRANS TT 
INNER MERGE JOIN TAXTRANSGENERALJOURNALACCOUNTENTRY TTGJAERIVA ON TTGJAERIVA.TAXTRANS = TT.RECID
INNER MERGE JOIN GENERALJOURNALACCOUNTENTRY GJAERIVA ON TTGJAERIVA.GENERALJOURNALACCOUNTENTRY = GJAERIVA.RECID 
AND GJAERIVA.POSTINGTYPE IN( 14,236,71,41) 
AND TT.TRANSDATE <= '"+ @[User::fecha] +"'
WHERE   
(TT.TAXORIGIN <> 11 AND TT.TRANSDATE BETWEEN  '"+ @[User::fecha_ini] +"' AND  '"+ @[User::fecha] +"') OR (TT.TAXORIGIN = 11 AND TT.TRANSDATE BETWEEN '"+ @[User::fecha_ini] +"' AND  '"+@[User::fecha] +"' )) AS T

   --JOIN 


     LEFT MERGE JOIN 
  (SELECT VOUCHER,SOURCERECID,TAXITEMGROUP,TAXCODE,GENERALJOURNALACCOUNTENTRY,TAXAMOUNT,TAXAMOUNTCUR FROM TT) TTRISR ON TT.VOUCHER = TTRISR.VOUCHER AND TT.SOURCERECID = TTRISR.SOURCERECID 
  AND TT.TAXITEMGROUP = TTRISR.TAXITEMGROUP 
  AND (TTRISR.TAXCODE LIKE 'RISR%')
  AND TTRISR.GENERALJOURNALACCOUNTENTRY = TTGJAE.GENERALJOURNALACCOUNTENTRY

但是我遇到了一个问题:

  

无效的对象名称TT。

1 个答案:

答案 0 :(得分:1)

第一个派生表(子查询)被赋予别名T,所以在连接第二个派生表时使用T而不是TT

SELECT
      *
FROM (
      SELECT
            TT.TAXAMOUNTCUR , TT.TAXORIGIN , TT.VOUCHER , TT.TAXITEMGROUP
          , TT.TAXCODE , TT.SOURCEBASEAMOUNTCUR , TT.SOURCETAXAMOUNTCUR
          , TTGJAERIVA.TAXTRANSRELATIONSHIP
          , TTGJAERIVA.GENERALJOURNALACCOUNTENTRY
          , TTGJAERIVA.LEDGERDIMENSION
          , GJAERIVA.TEXT
          , GJAERIVA.LEDGERDIMENSION AS LEDGERDIMENSIONGAE
          , GJAERIVA.POSTINGTYPE
      FROM TAXTRANS TT
      INNER MERGE JOIN TAXTRANSGENERALJOURNALACCOUNTENTRY TTGJAERIVA ON TTGJAERIVA.TAXTRANS = TT.RECID
      INNER MERGE JOIN GENERALJOURNALACCOUNTENTRY GJAERIVA ON TTGJAERIVA.GENERALJOURNALACCOUNTENTRY = GJAERIVA.RECID
            AND GJAERIVA.POSTINGTYPE IN (14, 236, 71, 41)
            AND TT.TRANSDATE <= '"+ @[User::fecha] +"'
      WHERE (TT.TAXORIGIN <> 11
      AND TT.TRANSDATE BETWEEN '"+ @[User::fecha_ini] +"' AND '"+ @[User::fecha] +"')
      OR (TT.TAXORIGIN = 11
      AND TT.TRANSDATE BETWEEN '"+ @[User::fecha_ini] +"' AND '"+@[User::fecha] +"')
    ) AS T
LEFT MERGE JOIN (
      SELECT
            VOUCHER , SOURCERECID , TAXITEMGROUP , TAXCODE
          , GENERALJOURNALACCOUNTENTRY , TAXAMOUNT , TAXAMOUNTCUR
      FROM TT
    ) TTRISR ON T.VOUCHER = TTRISR.VOUCHER
          AND T.SOURCERECID = TTRISR.SOURCERECID
          AND T.TAXITEMGROUP = TTRISR.TAXITEMGROUP
          AND (TTRISR.TAXCODE LIKE 'RISR%')
          AND TTRISR.GENERALJOURNALACCOUNTENTRY = TTGJAE.GENERALJOURNALACCOUNTENTRY