oracle 通过返回多于一行的相同值来分组

oracle group by returning more that one row of the same values

我的查询使用分组依据返回相同的值。任何人都可以向我解释为什么会这样或者我做错了什么。

查询:

SELECT ID, LAST_DAY(EXPDATE) EXPDATE, SUM(BASEUNITS) AS BASEUNITS, SUM(BONUSUNITS) AS BONUSUNITS
FROM TABLE
WHERE ID= '10'
GROUP BY ID, EXPDATE

结果:

       ID EXPDATE                BASEUNITS  BONUSUNITS  
       10 2016/04/30 12:00:00 AM    8560       0 
       10 2016/04/30 12:00:00 AM    8560       0

尽管这是不可能的,因为主键不可能实现 Oracle 冗余。但是当你得到这个时,你可以在 Id

之前使用 distinct
SELECT Distinct ID, LAST_DAY(EXPDATE) EXPDATE, SUM(BASEUNITS) AS BASEUNITS, SUM(BONUSUNITS) AS BONUSUNITS
FROM TABLE
WHERE ID= '10'
GROUP BY EXPDATE

您正在使用 Last_day() 函数,它不是聚合函数,因此在 groupby 中您应该指定用于分组的函数

SELECT ID, 
       LAST_DAY(EXPDATE) EXPDATE, 
       SUM(BASEUNITS) AS BASEUNITS,
       SUM(BONUSUNITS) AS BONUSUNITS
FROM TABLE
WHERE ID= '10'
GROUP BY ID, Last_Day(EXPDATE)