无法在同一查询中选择两个不同的别名

时间:2017-10-06 00:33:28

标签: sql sql-server

我想做一个像这样的选择:

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?此致

1 个答案:

答案 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'