2017-10-06 144 views
0

我有这个疑问:不容使用GROUP BY后WHERE子句到子查询

left JOIN 
(SELECT * FROM ##TTA TT WHERE (TT.TAXCODE LIKE 'IVA0A' OR TT.TAXCODE LIKE 'IVA0EXPT')) TT 
GROUP BY TT.DATAAREAID, tt.VOUCHER, TT.MAINACCOUNTID 
AS TTIVA0A ON Asiento.Asiento = TTIVA0A.VOUCHER 
AND Asiento.Cuenta = TTIVA0A.AD 
AND Asiento.Empresa = TTIVA0A.DATAAREAID 

问题是到GROUP BY子句中,我得到:

附近关键字 '组' 语法错误。

有人可以解释为什么我不能在WHERE条款后使用GROUP BY

+2

请包括整个查询。查询不是以'LEFT JOIN'开头的 –

+2

因为你的group by不在你的子查询中。移动括号,这不再是一个问题。 –

+1

我没有看到WHERE - 我看到一个连接。您需要在“GROUP BY”之前使用“ON”,否则您将收到错误 – Hogan

回答

2

如果你对格式化更加小心,这将是痛苦的显而易见的。

这是你在正确的地方与团队的代码。

left JOIN 
(
    SELECT * 
    FROM ##TTA TT 
    WHERE TT.TAXCODE LIKE 'IVA0A' 
     OR TT.TAXCODE LIKE 'IVA0EXPT' 
    GROUP BY TT.DATAAREAID 
     , TT.VOUCHER 
     , TT.MAINACCOUNTID 
) AS TTIVA0A ON Asiento.Asiento = TTIVA0A.VOUCHER 
    AND Asiento.Cuenta = TTIVA0A.AD 
    AND Asiento.Empresa = TTIVA0A.DATAAREAID 
+0

是的,您是对的。谢谢! – Benny

+1

它可能是很好的注意,子查询写入方式(SELECT *)它假定TT.DTAREAID和TT.VOUCHER,和TT MAINACCOUNTID是表中唯一的列或这仍然不会工作 – Matt

+1

约定@Matt。我可能会做很多不同的事情(并且安全) –