sql - 系统间缓存:不能在 WHERE 或 GROUP BY 子句中使用聚合函数
问题描述
我正在学习 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 子句中使用聚合函数
任何帮助表示赞赏。
格拉西亚斯
解决方案
我可以推测你真的想要:
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;
推荐阅读
- python - 有没有什么工具可以让我运行 python 笔记本而不用担心笔记本电脑关闭?
- go - Go Programming Language 一书示例中的 goroutine 泄漏
- linux-device-driver - 将 midi 键盘连接到拱形安装时遇到问题。杰克问题显然
- django - 选择除一个 Django 之外的所有字段
- c++ - 使用 ASIO 聊天服务器/客户端,找不到客户端示例代码
- r - R:返回我的函数中的对象列表不返回预期列表
- mysql - 将 Xamarin.Forms 与 MySQL 数据库连接时出现连接错误
- haskell - Haskell 类型约束
- swift - 分离结果
- php - 从两个数据表中返回一个数组,这是在输出 JSON 之前在 mySQL 或 PHP 中完成的吗?