我有这个查询来分组,并以Month_yeat和count格式显示结果。
SELECT
TO_CHAR (D_DATE,
'MON')
|| '_'
|| TO_CHAR (D_DATE,
'YYYY') Month_Year,
COUNT (*) Request_Count
FROM
MY_TABLE WHERE V_TYPE='ABCD'
GROUP BY
TO_CHAR (D_DATE,
'MON') || '_' || TO_CHAR (D_DATE,
'YYYY')
ORDER BY
1;
我要求输出应根据年排序,然后第一个月。例如:当前输出为:
MAR_2023 2223
FEB_2023 433
MAY_2022 10
APR_2022 77
所需输出为:
FEB_2023 433
MAR_2023 2223
APR_2022 77
MAY_2022 10
我知道这是排序的基础上按字母顺序,如果我给予的条件,但需要一个解决方案,可以解决这个问题注:将年份和月份分组为单独的列并按其排序是不可接受的。
2条答案
按热度按时间ogq8wdun1#
你可以,但是使用
group by
和order by
子句的附加部分,例如order by
将确保行正确排序group by
也需要它(否则您将得到“ORA-00979:不是GROUP BY表达式”错误)fzwojiic2#
将日期截断为月份的开始并按该日期分组,然后按截断的日期而不是格式化的字符串排序。
其中,对于样本数据:
输出:
| 月_年|请求计数|
| --------------|--------------|
| 2022年1月|十九岁|
| 2023年1月|十二岁|
| 2023年2月|五|
| 2023年3月|七|
fiddle