显示日期在财政年度的哪个季度

新手上路,请多包涵

我正在尝试构建一个查询,该查询将映射两列,一列是表中的日期,第二列是别名,以显示日期所在的季度和财政年度。

不幸的是,我没有足够的 SQL 知识来知道从哪里开始。我知道我会使用 getdate()dateadd(MONTH,,) 的组合来做到这一点,但是我所做的一切都没有接近工作。

更复杂的是,澳大利亚的财政年度是从 7 月 1 日至 6 月 30 日,因此 2012 财政年度的第一季度将从 2012 年 7 月 1 日开始。

我可以在没有声明的情况下执行此操作,但是我更愿意在声明中使用它,因为它将用于 SSRS 报告和 C# 应用程序,并且它会使维护变得更加容易。

原文由 Michael A 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 544
2 个回答

这应该工作: -

 SELECT
    MyDate,
    CASE
        WHEN MONTH(MyDate) BETWEEN 1  AND 3  THEN convert(char(4), YEAR(MyDate) - 1) + 'Q3'
        WHEN MONTH(MyDate) BETWEEN 4  AND 6  THEN convert(char(4), YEAR(MyDate) - 1) + 'Q4'
        WHEN MONTH(MyDate) BETWEEN 7  AND 9  THEN convert(char(4), YEAR(MyDate) - 0) + 'Q1'
        WHEN MONTH(MyDate) BETWEEN 10 AND 12 THEN convert(char(4), YEAR(MyDate) - 0) + 'Q2'
    END AS Quarter
FROM
    MyTable

输出:-

 MyDate        Quarter
----------    --------
2011-01-01    "2010Q3"
2011-04-01    "2010Q4"
2011-07-01    "2011Q1"
2011-10-01    "2011Q2"

原文由 Adam Ralph 发布,翻译遵循 CC BY-SA 3.0 许可协议

我发现这非常适合将季度分配到您想要的月份范围。

 select

(CASE WHEN DatePart(m,mydate.mytable) > 4 THEN DatePart(yyyy,mydate.mytable)+1 ELSE DatePart(yyyy,mydate.mytable) END) AS FiscalYear,
    CASE
        WHEN MONTH(mydate.mytable) BETWEEN 1  AND 3  THEN convert(char(4), YEAR(mydate.mytable) - 1) + 'Q3'
        WHEN MONTH(mydate.mytable) BETWEEN 4  AND 6  THEN convert(char(4), YEAR(mydate.mytable) - 1) + 'Q4'
        WHEN MONTH(mydate.mytable) BETWEEN 7  AND 9  THEN convert(char(4), YEAR(mydate.mytable) - 0) + 'Q1'
        WHEN MONTH(mydate.mytable) BETWEEN 10 AND 12 THEN convert(char(4), YEAR(mydate.mytable) - 0) + 'Q2'
    END AS Quarter

from

mytable

原文由 TheOx 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进