2017-10-06 75 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

相关问题