2017-10-06 114 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。我可能會做很多不同的事情(並且安全) –