2013-06-24 34 views
0

如何找出基礎上,起始日期在我的例子 假設一天財季寫這個查詢後發現fiscalquarter我的結果集就會像下面如何根據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顯示它必須成爲第一季度。假設我2013年的最低日期是'2013-04-01',那麼Quarter必須顯示爲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 

如何在這個查詢做動態..請分享查詢 任何人都可以共享查詢,幫我解決這個問題

+0

Prashant16具有良好的解決方案,但是你正在尋找不作任何會計意義。財政季度基於公司官方備案年度的稅收。許多小型企業都以1月1日爲基礎,其他企業則一年四季分散。然而,每年財政季度都不會發生變化 - 因此,一旦您知道哪個月是公司的基礎,Prashant的答案就是如此。 – DRapp

+0

我同意prashant的答案..但我不知道什麼月份將是公司的開始月份。所以,由於這個原因,我面臨的問題 – user1485267

+0

然後它聽起來像你只是摸索完整的示例數據,沒有具體和想要在需要申請時知道如何計算它。如果是這樣,只需構建一個像Prashant提供的案例結構。當你有公司的實際開始日期時,請改變它。 – DRapp

回答

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 
+0

如果我們應用上面的邏輯我的輸出不會來糾正爲什麼因爲2013年我需要quarter1而不是它顯示2它是錯誤的在我的scneario基於上述輸入和輸出必須顯示如下 – user1485267