2016-11-09 58 views
0

我的數據如下所示:在季度集團返回上個月

*Quarter|Month* 
Q1 2013|Jan 2013  
Q1 2013|Feb 2013 
**Q1 2013|Mar 2013** 
Q2 2013|Apr 2013 
Q2 2013|May 2013 
**Q2 2013|Jun 2013** 
Q3 2013|Jul 2013 
**Q3 2013|Aug 2013** 

我想寫一個SQL查詢返回每個季度的最後一個月,類似如下:

*Month* 
Mar 2013 
Jun 2013 
Aug 2013 

我已經使用了以下查詢來獲取得遠一點:

*SELECT MONT_KEY, ROW_NUMBER() OVER (PARTITION BY QURT_KEY ORDER BY MONT_KEY) RANKBYQURT FROM ZQUARTERMONTH;* 

    MONT_KEY | RANKBYQURT 
    Jan 2013 |  1 
    Feb 2013 |  2 
    **Mar 2013 |  3** 
    Apr 2013 |  1 
    May 2013 |  2 
    **Jun 2013 |  3** 
    Jul 2013 |  1 
    **Aug 2013 |  2** 

現在,我怎麼只顯示每個組別中排名最高的月份?仍在工作....

問候

+0

歡迎的StackOverflow!你可以請帖,你已經嘗試過嗎?請提供[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。要求「爲我編寫一些代碼」的問題通常是不可接受的。 – FelixSFD

回答

0

試試這個:

;WITH T as 
(
SELECT Quarter,Month, dense_rank() 
    OVER (PARTITION BY Quarter ORDER BY Year(Month),month(Month) DESC) as Rank FROM @table 
) 
SELECT * from T WHERE rank=1 
+0

謝謝詹姆斯。奇蹟般有效。 – xplorerdev