SQL - 获取每个组的前5个值

时间:2013-06-24 16:28:57

标签: sql sybase

我真的希望得到一些来自SQL Sybase表的查询的帮助。 我想查看任何给定日期的每个StressResults的前5 PortfolioID 任何投资组合的不同StressResults可能会有重复的StressTest

我真的很感激任何意见。

在名为(PortfolioID, Date, StressTest, StressResult)的表中有四列StressResultsTable,在(StressTest, Limits)表中有两列StressScenariosTable

以下是我的示例查询,即Universe。

SELECT a.PortfolioID, a.Date, a.StressTest, a.StressResult from StressResultsTable a    join StressScenariosTable b on a.StressTest = b.StressTest
 WHERE a.PortfolioID IN ('Portfolio A', 'Portfolio B') 
   AND a.StressResult <> 0 AND a.Date >= '2013-06-20' and b.Limits = 1
 ORDER BY a.PortfolioID, a.Date, a.StressResult 

1 个答案:

答案 0 :(得分:1)

尝试以下代码:

&#13;
&#13;
select a.PortfolioID, a.Date, a.StressTest, a.StressResult from StressResultsTable a 
where
    (
        select count(b.*) from from StressResultsTable b
        WHERE a.PortfolioID=b.PortfolioID
        and a.StressResult=b.StressResult
    ) <= 5
and 
a.PortfolioID IN ('Portfolio A', 'Portfolio B') 
AND a.StressResult <> 0 AND a.Date >= '2013-06-20'
&#13;
&#13;
&#13;