3

我有一张桌子

expenses (
    purchase_date date, 
    item_purchased varchar2(15),
    amount number
)

我想在购买日期(日期列)上执行“分组依据”。说,我必须这样做:

SELECT purchase_date, count(*) 
FROM expenses 
GROUP BY purchase_date;

它给了我结果:

purchase_date    count
-------------   -------
19-Jul-12           1
20-Jul-12           1

虽然我有多个属于同一天的条目

我正在使用 Oracle 11g。我的一位朋友使用 Oracle 10g,并且在她的版本中,相同的查询按预期工作。那么11g有什么问题呢?

请朋友们帮帮我。

TIA。:)

4

1 回答 1

4

DATE 列还包含一天中的时间。不幸的是,SQL*Plus(您似乎正在使用)在默认配置中不显示时间。

要摆脱聚合期间的时间,请使用 trunc() 函数:

SELECT trunc(purchase_date), count(*) 
FROM expenses 
GROUP BY trunc(purchase_date);

如果这不会改变结果,那么您的数据很可能不是您认为的那样。然后,您应该发布一个独立的测试用例(包括创建测试数据的 INSERT 语句)。您可以在http://sqlfiddle.com上执行此操作

于 2012-07-19T08:10:01.557 回答