sql - 显示日期处于财政年度的哪个季度

标签 sql sql-server sql-server-2008 tsql finance

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

不幸的是,我没有足够的 SQL 知识,不知道从哪里开始。我知道我会结合 getdate()dateadd(MONTH,,) 来完成此操作,但是我组合在一起的任何东西都无法正常工作。

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

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

最佳答案

这应该有效:-

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"

关于sql - 显示日期处于财政年度的哪个季度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8738818/

相关文章:

sql - 为许多参数执行 SAS 宏

sql - 如何计算sql中聚合中的数字?

更新行的 SQL 查询

sql - 使用 SQL 根据记录计数显示结果

SQL IN 查询产生奇怪的结果

mysql - SQL语法错误

sql - 如何构造子查询/CTE 以替换嵌套聚合函数?

c# - 恢复数据库超时?

sql - SQL Server Management Studio 中的查询成本

sql-server - SQL 服务器 : Unable to create relationship