【问题标题】:How to Sort the Financial Year quarters correctly in SQL?如何在 SQL 中正确排序财政年度季度?
【发布时间】:2020-07-23 11:03:45
【问题描述】:

我使用以下代码更改各个季度的日期。

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

我如何在 Quarter 正确订购

【问题讨论】:

    标签: sql sql-server sorting sql-order-by


    【解决方案1】:

    假设这是一个聚合查询,您可以只选择季度中的日期:

    order by min(b.CDate)
    

    如果将它们表示为 YYYYQn 而不是 QnYYYY,则可以直接按季度排序。

    CASE 表达式是不必要的。您还可以将逻辑简化为:

    CONCAT(DATENAME(YEAR, DATEADD(MONTH, -6, B.CDate)),
           'Q', DATENAME(QUARTER, DATEADD(MONTH, -6, B.CDate))
          ) as Quarter,
    

    也就是说,您的季度是减去 6 个月后得到的“标准”季度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多