2017-10-09 75 views
0

我有一个左连接是这样的:SQL多标识符到GROUP BY子句

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

我想你通过ISNULL(VENDTRANSID,0) AS LJT想组,因为你不能在WHERE子句中使用别名LJT你应该使用表达式本身组:

GROUP BY TT.VOUCHER, TT.DATAAREAID, ISNULL(VENDTRANSID,0) 
0

LJT是给列ISNULL(VENTTRANSID,0)的别名。

我认为,在GROUP BY子句而不是ISNULL(LJT.VENTTRANSID,0)如果你只是给ISNULL(VENTTRANSID,0)它将解决这个问题。