GROUP BY无法在Oracle 11g中运行

时间:2012-07-19 08:01:32

标签: sql oracle11g

我有一张桌子

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

我想在purchase_date(日期列)上执行'group by'。 说,我必须这样做:

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。 :)

1 个答案:

答案 0 :(得分:4)

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

要在聚合期间消除时间,请使用trunc()函数:

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

如果这不会改变结果,那么您的数据很可能不是您认为的那样。您应该发布一个自包含的测试用例(包括INSERT语句来创建测试数据)。您可以在http://sqlfiddle.com

执行此操作