我有这样的左连接:
LEFT MERGE JOIN --IVA0A
( SELECT VOUCHER,DATAAREAID,ISNULL(VENDTRANSID,0)AS LJT, SUM(IIF(TAXITEMGROUP = 'ANTICIPOS',-1*TAXBASEAMOUNT,TAXBASEAMOUNT))AS TAXBASEAMOUNT,
SUM(IIF(TAXITEMGROUP = 'ANTICIPOS',-1*TAXAMOUNT,TAXAMOUNT)) AS TAXAMOUNT FROM
##CPP TT
WHERE (
(TT.TAXCODE LIKE 'IVA0A' OR TT.TAXCODE LIKE 'IVA0AFA' OR TT.TAXCODE LIKE 'IVA0AEXP') OR
(TT.TAXITEMGROUP = 'ANTICIPOS' AND (TT.TAXCODE LIKE 'IVA0AP' OR TT.TAXCODE LIKE 'IVA0AFAP' OR TT.TAXCODE LIKE 'IVA0AEXPP'))
)
GROUP BY TT.VOUCHER,TT.DATAAREAID,ISNULL(LJT.VENDTRANSID,0))
AS TTIVA0A ON VT.VOUCHER = TTIVA0A.VOUCHER AND TTIVA0A.DATAAREAID = VT.DATAAREAID
and IIF(TTIVA0A.LJT=0,VT.RECID,TTIVA0A.LJT) = VT.RECID
问题是当我尝试使用GROUP BY
子句
SQL返回:
无法绑定多部分标识符“LJT.VENDTRANSID”。
我无法理解为什么会这样,有人可以解释一下吗?此致
答案 0 :(得分:0)
LJT是列ISNULL(VENTTRANSID,0)的别名。
我认为,如果你只给ISNULL(VENTTRANSID,0),在GROUP BY子句而不是ISNULL(LJT.VENTTRANSID,0)中,它将解决问题。
答案 1 :(得分:0)
我想你想按ISNULL(VENDTRANSID,0) AS LJT
分组,因为你不能在LJT
子句中使用别名WHERE
,你应该使用表达式本身进行分组:
GROUP BY TT.VOUCHER, TT.DATAAREAID, ISNULL(VENDTRANSID,0)