我有一张桌子
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。 :)
答案 0 :(得分:4)
DATE列还包含当天的时间。不幸的是,SQL * Plus(您似乎正在使用它)不会在默认配置中显示时间。
要在聚合期间消除时间,请使用trunc()函数:
SELECT trunc(purchase_date), count(*)
FROM expenses
GROUP BY trunc(purchase_date);
如果这不会改变结果,那么您的数据很可能不是您认为的那样。您应该发布一个自包含的测试用例(包括INSERT语句来创建测试数据)。您可以在http://sqlfiddle.com
执行此操作