2017-10-06 110 views
-1

選擇我想要做一個選擇是這樣的:不容有兩個不同的別名爲相同的查詢

LEFT MERGE JOIN 
    (SELECT * 
    FROM ##TTC AS TT 
    WHERE (TT.TAXCODE LIKE 'IEPSCUOTAP') TTIEPSCUOTA ON 
C1.TT_VOUCHER = TTIEPSCUOTA.VOUCHER 
AND C1.TT_TAXITEMGROUP = TTIEPSCUOTA.TAXITEMGROUP 
AND PRO.TTF_SOURCERECID = TTIEPSCUOTA.SOURCERECID 

問題是,我得到一個錯誤:

Incorrect syntax near 'TTIEPSCUOTA '

而且that's因爲在SQL中我們不能在WHERE子句之後使用ALIASES,有人能解釋我怎樣才能重構此查詢以在where子句之後使用TTIEPSCUOTA?問候

回答

1

你有不對稱的括號:

LEFT MERGE JOIN 
(SELECT * 
FROM ##TTC TT 
WHERE TT.TAXCODE LIKE 'IEPSCUOTAP' 
) TTIEPSCUOTA 
ON C1.TT_VOUCHER = TTIEPSCUOTA.VOUCHER AND 
    C1.TT_TAXITEMGROUP = TTIEPSCUOTA.TAXITEMGROUP AND 
    PRO.TTF_SOURCERECID = TTIEPSCUOTA.SOURCERECID 

注意:您不應該被指定爲JOIN算法,除非你知道這是必要的。

編輯:

爲什麼你使用子查詢呢?這是更簡單地寫爲:

LEFT MERGE JOIN 
##TTC TTIEPSCUOTA 
ON C1.TT_VOUCHER = TTIEPSCUOTA.VOUCHER AND 
    C1.TT_TAXITEMGROUP = TTIEPSCUOTA.TAXITEMGROUP AND 
    PRO.TTF_SOURCERECID = TTIEPSCUOTA.SOURCERECID AND 
    TT.TAXCODE LIKE 'IEPSCUOTAP' 
+0

我只是不斷收到同一個問題'附近有語法錯誤TTIEPSCUOTA「.' – Benny

+0

據推測,這是一個較大查詢的一部分。這是不明顯的,爲什麼一個格式良好的查詢與此snipper會造成問題。 –

+0

我們得到與第二個查詢相同的結果嗎?只是刪除子查詢? – Benny

相關問題