sql - ORA-00936: 缺少表达式,仅在日期时间列上按日期分组
问题描述
我有一个类似列的表:
CREATED_DATE DATE
我的查询如:
SELECT ACCOUNT, SUM(TOTAL), CREATED_DATE
FROM RKAP_REALISASI
WHERE ACCOUNT = '21157' AND CREATED_DATE BETWEEN TO_DATE('9/5/2018', 'MM/DD/YYYY') AND TO_DATE('10/31/2018','MM/DD/YYYY')
GROUP BY ACCOUNT, CREATED_DATE
这将按完整的 DateTime 分组,包括小时和分钟。我希望仅按日期 MM/DD/YYYY 进行分组,并对其进行一些 SUM,而不是按 MM/DD/YYYY/hh/mm/ss。
到目前为止,我已经尝试过:
SELECT ACCOUNT, SUM(TOTAL), DATE(CREATED_DATE)
FROM RKAP_REALISASI
WHERE ACCOUNT = '21157' AND CREATED_DATE BETWEEN TO_DATE('9/5/2018', 'MM/DD/YYYY') AND TO_DATE('10/31/2018','MM/DD/YYYY')
GROUP BY ACCOUNT, DATE(RKAP_REALISASI.CREATED_DATE)
但它失败了,ORA-00936:缺少表达式。
有谁知道如何做到这一点?谢谢。
解决方案
您可以使用TRUNC
函数仅获取日期而不是小时、分钟、秒。
SELECT account, SUM(total), TRUNC(created_date)
FROM rkap_realisasi
WHERE account = '21157'
AND TRUNC(created_date) BETWEEN TO_DATE('9/5/2018', 'MM/DD/YYYY') AND TO_DATE('10/31/2018','MM/DD/YYYY')
GROUP BY account, TRUNC(created_date)
ORDER BY account, TRUNC(created_date);
推荐阅读
- html - 字段集无法应用弹性方向
- javascript - 为什么我的组件在 setState 后没有重新渲染?
- ibm-midrange - 抛出“不存在这样的路径或目录”错误,即使文件存在于 IFS 文件夹中,作业也会转到 MSGW
- ms-access - DoCmd.SetParmeter "[enter string parameter]", stringParameter 返回错误:对象 "stringParameter" 没有填充对象自动化
- android - 检查全球位置访问权限
- angular - KeyEvent 不改变模板
- python - Robotframework - 如何设置语言环境(法语)
- c# - 调试器未在应用启动时附加到 xaml
- c# - 对于某些注册表路径/键,我没有获取数据
- vsto - 如果 AppointmentItem 是重复出现的 AppointmentItem,则无法从 AppointmentItem 存储和检索自定义 ItemProperties