2013-06-24 59 views
1

我真的很想從SQL Sybase表中查詢以下內容。 我想看看是否每個PortfolioID頂部5 StressResults對於任何給定的日期 可能有重複StressResults爲不同StressTest任何投資組合。SQL - 獲取每個組的前5個值

我真的很感激任何輸入。

表中有四列(PortfolioID, Date, StressTest, StressResult),表名爲StressResultsTable,表中有兩列(StressTest, Limits),名爲StressScenariosTable

這是我的示例查詢,它是宇宙。

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

試試下面的代碼:

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'

相關問題