2016-11-09 56 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