Apache Derby分组或聚合错误:

时间:2015-02-07 15:32:57

标签: apache error-handling derby

我遇到了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
;

表PORPHYRIE看起来像:

  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.

我不明白问题是什么....请帮忙!

1 个答案:

答案 0 :(得分:0)

我自己解决了我的问题:

正确的解决方案是:

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
;

如果您在德比中执行分组或聚合功能,则所有COLUMNS必须是分组或聚合动作的一部分。因此,必须消除子查询中的ID-colum,并且内部连接必须在两个表的ENTRYDATES-Columns上进行。

我认为这不是一个非常有效的解决方案。