Apache Derby grouping or aggregate error:
Apache Derby grouping or aggregate error:
我遇到以下 Apache Derby 问题(使用子查询和内部联接):
SELECT * FROM (SELECT ID,ENTRYDATE,CAST((SUM(DRUGAMOUNT_ML)) AS DECIMAL(15,2)) AS SUM_DRUGAMOUNT_ML FROM PORPHYRIE GROUP BY ENTRYDATE) a
INNER JOIN PORPHYRIE b
ON a.ID=b.ID
;
table 卟啉看起来像:
ID EntryDate DRUGAMOUNT_ML DRUGAMOUNT_MG ....
6601 2014-11-15 0.25 ...
6602 2014-11-15 0.26 ...
.
.
.
错误信息是:
Column reference 'PORPHYRIE.ID' is invalid. For a SELECT list with a GROUP BY, the list may only contain grouping columns and valid aggregate expressions.
我不明白问题出在哪里....请帮忙!
我自己解决了我的问题:
正确的解法是:
SELECT * FROM (SELECT ENTRYDATE,CAST((SUM(DRUGAMOUNT_ML)) AS DECIMAL(15,2)) AS SUM_DRUGAMOUNT_ML FROM PORPHYRIE GROUP BY ENTRYDATE) a
INNER JOIN PORPHYRIE b
ON a.ENTRYDATE=b.ENTRYDATE
;
如果您在德比中执行分组或聚合函数,则所有列都必须是分组或聚合操作的一部分。因此,必须消除子查询中的 ID 列,并且必须在两个表的 ENTRYDATES 列上进行内部连接。
我不认为这是一个非常聪明的解决方案。
我遇到以下 Apache Derby 问题(使用子查询和内部联接):
SELECT * FROM (SELECT ID,ENTRYDATE,CAST((SUM(DRUGAMOUNT_ML)) AS DECIMAL(15,2)) AS SUM_DRUGAMOUNT_ML FROM PORPHYRIE GROUP BY ENTRYDATE) a
INNER JOIN PORPHYRIE b
ON a.ID=b.ID
;
table 卟啉看起来像:
ID EntryDate DRUGAMOUNT_ML DRUGAMOUNT_MG ....
6601 2014-11-15 0.25 ...
6602 2014-11-15 0.26 ...
.
.
.
错误信息是:
Column reference 'PORPHYRIE.ID' is invalid. For a SELECT list with a GROUP BY, the list may only contain grouping columns and valid aggregate expressions.
我不明白问题出在哪里....请帮忙!
我自己解决了我的问题:
正确的解法是:
SELECT * FROM (SELECT ENTRYDATE,CAST((SUM(DRUGAMOUNT_ML)) AS DECIMAL(15,2)) AS SUM_DRUGAMOUNT_ML FROM PORPHYRIE GROUP BY ENTRYDATE) a
INNER JOIN PORPHYRIE b
ON a.ENTRYDATE=b.ENTRYDATE
;
如果您在德比中执行分组或聚合函数,则所有列都必须是分组或聚合操作的一部分。因此,必须消除子查询中的 ID 列,并且必须在两个表的 ENTRYDATES 列上进行内部连接。
我不认为这是一个非常聪明的解决方案。