我想做一个像这样的选择:
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
问题是我收到了错误:
'TTIEPSCUOTA'附近的语法不正确
这是因为在SQL中我们不能在WHERE子句之后使用ALIASES,有人可以解释我如何重构此查询以在where子句之后使用TTIEPSCUOTA
?此致
答案 0 :(得分: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'