Intersystems Cache: агрегатную функцию нельзя использовать в выражении WHERE или GROUP BY - PullRequest
0 голосов
/ 03 мая 2018

Я изучаю Intersystems Cache и имею следующую функцию, основанную на коде, работающем в более ранней версии продукта (я 17.2).

Query dueToday(rToday As DType.Date) As %SQLQuery(ROWSPEC = "Book:User.Books,RefNo:%Integer")
{
    SELECT BookODue.Rent, BookODue.RefNo
      FROM BookODue
      LEFT JOIN BookTran
      ON BookODue.Rent = BookTran.Rent
      WHERE (BookODue.AuditDate = :rToday) AND (MAX(BookTran.TranDate) < :rToday)
}

Когда я компилирую это, я получаю

Агрегатная функция не может использоваться в предложении WHERE или GROUP BY

Любая помощь приветствуется.

Грэкиас

1 Ответ

0 голосов
/ 03 мая 2018

Я могу предположить, что вы действительно хотите:

SELECT bo.Rent, bo.RefNo
FROM BookODue bo JOIN
     BookTran bt
     ON bo.Rent = bt.Rent
WHERE bo.AuditDate = :rToday
GROUP BY bo.Rent, bo.RefNo
HAVING MAX(bt.TranDate) < :rToday;
...