Показать сообщение отдельно
Старый 18.02.2021, 11:52   #1  
oleggy is offline
oleggy
Участник
 
256 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
AX09 вопрос SQL запросам генерируемым в QueryBuildDatasource
Привет.
Подскажите почему 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 и не ругается?