我正在使用 Jaspersoft 的 iReport 创建一个报告,该报告将从我的维护助手 CMMS 数据库中提取数据。数据库位于本地主机上,我没有创建任何表或列。 MA CMMS 负责解决这个问题。我只想把数据拉到一个报告中。
这是我的代码:
SELECT *
FROM "tblworkordertask"
WHERE "dbltimespenthours" > 0
AND "dtmdatecompleted" BETWEEN $P{DATE_FROM} AND $P{DATE_TO}
GROUP BY "intworkorderid"
和我的错误:
Caused by: java.sql.SQLSyntaxErrorException: Column reference 'tblWorkOrderTask.id' is invalid, or is part of an invalid expression. For a SELECT list with a GROUP BY, the columns and expressions being selected may only contain valid grouping expressions and valid aggregate expressions.
我不知道为什么错误指的是“tblWorkOrderTask.id”,因为我没有这样的列,我也没有要求该列。
如果我去掉 group by 子句,它工作正常,但正如您所料,我得到多个具有相同 WorkOrderID 的结果。我想按这个列分组,然后统计结果。我尝试使用 SELECT DISTINCT,但随后我收到有关未选择列的错误。
最佳答案
您正在选择 tblWorkOrderTask 表中的所有列。 “id”列是该表中的第一列。您收到错误,因为您没有在选择列表中指定所有列。
此选择会起作用,但我不确定您需要从表格中获取哪些信息。
SELECT id, intworkorderid
FROM tblWorkOrderTask
group by id, intworkorderid
http://www.w3schools.com/sql/sql_groupby.asp
关于SQL 列引用无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15577442/