0

在我的示例中假设如何根据 start_date 找出一天中的财政季度编写此查询后,我的结果集将如下所示

SELECT 
MIN(START_DATE) AS start_date, 
MONTH(MIN(start_date)) AS p
FROM 
xyz 
GROUP BY YEAR(START_DATE)

start_date p 
2001-01-01 1
2002-01-01 1
2003-01-01 1
2004-01-01 1
2005-01-01 1
2006-01-01 1
2007-01-01 1
2013-04-01 4
2018-02-01 2
2019-01-01 1

对于每一年,日期和月份的最小值如上所示。根据这个结果,我应该计算一年的季度数,即显示的最小 start_date 必须成为季度 1。假设我 2013 年的最小日期是“2013-04-01”,那么季度必须显示为 1(4, 5,6-Q1,7,8,9-Q2,10-11-12-Q3,1,2,3-Q4),如果我 2018 年的最短开始日期是“2018-02-01”,那么季度必须这样显示(2,3,4-Q1,5,6,7-Q2,8,9,10-Q3,11,12,1-Q4)

基于以上日期,现在我的输出如下所示

start_date  quarter
2001-01-01    1
2002-01-01    1
2003-01-01    1
2004-01-01    1
2005-01-01    1
2006-01-01    1
2007-01-01    1
2013-04-01    1
2018-02-01    1
2019-01-31    1

如何在此查询中动态执行.. 请分享查询 任何人都可以分享查询并帮助我解决此问题

4

1 回答 1

1

尝试这个

SELECT  t.start_date ,
    ( CASE WHEN MONTH(t.start_date) IN ( 11, 12, 1 ) THEN 1
           WHEN MONTH(t.start_date) IN ( 2, 3, 4 ) THEN 2
           WHEN MONTH(t.start_date) IN ( 5, 6, 7 ) THEN 3
           ELSE 4
      END ) AS FiscalQuarter
FROM    dbo.Table_1 AS t
于 2013-06-24T13:06:57.793 回答