如何设置会计月日历,或将日历从 10 月 10 日到 9 月 9 日排序?

Posted

技术标签:

【中文标题】如何设置会计月日历,或将日历从 10 月 10 日到 9 月 9 日排序?【英文标题】:How can I set a fiscal month callendar, or sort the calendar from 10/Oct to 09/Sept? 【发布时间】:2019-04-23 20:53:58 【问题描述】:

我需要按我们公司的会计日历对月份进行排序。截至目前我只能按字母顺序排序,四月八月,十二月,二月.. 我需要它来排序 10 月到 9 月

Fiscal Year Month Name COUNT(DISTINCT CTL_NO) 
2019        April                         437 
2019        December                      707 
2019        February                      600 
2019        January                       730 
2019        March                         542 
2019        November                      745 
2019        October                       955 
2018        April                         600 
2018        August                        902 
2018        December                      728 
2018        February                      593 
2018        January                       745 
2018        July                          812 
2018        June                          704 
2018        March                         671 
2018        May                           589 
2018        November                      590 
2018        October                       769 
2018        September                     810

【问题讨论】:

我想添加一个屏幕截图,但我不知道该怎么做。 什么截图?对于纯代码问题,屏幕截图很少有帮助。此外,由于防火墙限制,许多人无法访问图片网站。 感谢您的帮助 【参考方案1】:

一种方法是使用 CASE 表达式来设置排序键。因为您的表似乎将月份存储为字符串,所以我们需要将它们转换为 DATE。一旦我们有了 DATE 数据类型,我们就可以提取月份数,我们可以用它来排序

SELECT Fiscal_Year, Month_Name, COUNT(DISTINCT CTL_NO) 
  FROM SOME_TABLE t
 group by Fiscal_Year, Month_Name
  ORDER BY Fiscal_year
           , CASE TRIM(TO_CHAR(to_date(Month_Name,'Month'), 'MM'))
              WHEN '10' THEN -2
              WHEN '11' THEN -1
              WHEN '12' THEN 0
              ELSE TO_NUMBER(TO_CHAR(to_date(Month_Name,'Month'), 'MM'))
            END

这适用于一次性使用,例如学校作业,但它不是很健壮,每次需要时都必须重复。

一个更好的方法是有一个会计日历表,它可以告诉您每年的每个日历日是哪个会计年度、会计月、会计周等。每年只有 365/366 行,所以开销并不大。此类表格通常在“现在”之前几年填充,过去几年的数据基本上永远保留,以便可以查找过去的日期并轻松确定相关的会计日期。

祝你好运。

【讨论】:

是否有全面的逐步说明如何输入此语法? @bobjarvis - 您的核心解决方案是合理的,我刚刚对其进行了编辑以适应 OP 发布的数据。希望你不要介意。 感谢您的快速帮助。我还不知道如何处理代码。我试图输入一个新的计算字段。但我得到一个语法错误。我承认我肯定在错误的地方输入了代码,因为我不知道如何使用 oracle。 @APC:没问题。 :-) @Bejohnson - 不幸的是,我们对此无能为力。如果您发布代码,我们可以修复语法错误,仅此而已。

以上是关于如何设置会计月日历,或将日历从 10 月 10 日到 9 月 9 日排序?的主要内容,如果未能解决你的问题,请参考以下文章

无法在日历表单中滚动(日、月、年)

谷歌日历API v3从timeMin之前的全天活动

禁用结束日期不超过 10 天的日历 javascript

《Linux学习并不难》Linux常用操作命令(10):cal命令显示日历信息

在多个日期维度层次结构上查找平均值

2023年1月放假日历表