Привет.
Подскажите почему AX09 строит свои запросы с нарушением порядка операторов ?
Если этот запрос тупо вставить в ту же sql студию она естественно будет ругатся.
Приходится его "конвертировать" с соблюдением синтаксиса SQL:
X++:
SELECT * | { [ DISTINCT | ALL ] { } [,...] }
FROM { [ ] } [,...]
[ WHERE ]
[ GROUP BY { | Integer } [,...] ]
[ HAVING ]
[ { UNION [ALL] | INTERSECT | EXCEPT SELECT- } ] [...]
[ ORDER BY { | Integer [ ASC|DESC ] } [,...] ]
[ INTO { TEMP | SCRATCH } ] ;
Например запроса:
X++:
SELECT FIRSTFAST dataAreaId
FROM ProjTable
GROUP BY ProjTable.dataAreaId, ProjTransPosting.ProjId, ProjTransPosting.CategoryId
WHERE ((APMSystemRef = 0)) AND ((ProjId = N'PR000081-0167001'))
JOIN FIRSTFAST ProjId, CategoryId, SUM(AmountMst), SUM(AmountMSTSecond)
FROM ProjTransPosting
WHERE ProjTable.ProjId = ProjTransPosting.ProjId
AND ((LedgerTransDate>={ts '2021-02-09 00:00:00.000'} AND LedgerTransDate<={ts '2021-02-09 00:00:00.000'}))
AND ((ProjTransType = 2) OR (ProjTransType = 3) OR (ProjTransType = 4))
AND ((PostingType = 123 OR PostingType = 125))
1. Почему он имеет такой некорректный вид?
2. И как его можно преобразовывать автоматически к корректному виду? Есть такие средства?
3. Как SQL сервер понимает данный запрос из AX и не ругается?