我有類似這樣的一個表:選擇前5的工資每個類別
id sml desc amount
1 23 bla 100
2 23 bla 50
3 23 bla 30
4 23 bla 20
1 40 bla1 100
2 40 bla2 23
3 40 bla3 34
4 40 bla4 34
這是幾個從其它表連接的結果。我想選擇amount
列中每個sml
值中具有最高值的五名僱員。
輸出示例:(我的示例中不必每次sml
五個所以我只用顯示兩個此外,如果第五和第六值相等,我想返回兩者)
id sml desc amount
1 23 bla 100
2 23 bla 50
1 40 bla1 100
2 40 bla2 100
3 40 bla3 34
我嘗試以下查詢:
select [MS_EmployeeNumber],[SA_Semel],[Description],sum([MS_Amount]) as Amount,
rank() over (Partition BY [SA_Semel], [Description]
select [MS_EmployeeNumber],[SA_Semel],[Description],sum([MS_Amount]) as Amount,
rank() over (Partition BY [SA_Semel], [Description]
ORDER BY sum([MS_Amount]) Desc) AS Rank
from [dbo].[MonthlySalary] as sml
inner join [dbo].[SmlAnalyse] as SA on SA.SA_Semel = sml.MS_Semel
inner join [dbo].[SalarySMLlist] as list on list.Semel = SA.SA_Semel
group by [MS_EmployeeNumber],[SA_Semel],[Description]
order by SA_Semel, Amount desc
當我運行這個級別上的所有表做他的工作,並考慮我的要求做了排名上MS_Semel。
我不知道我在下面。你能分享一下你希望得到的樣品輸入嗎? – Mureinik
我編輯我的帖子。 – Jordan1200
我沒有分析你的整個查詢。看來你已經知道如何使用排名,所以只需添加你的查詢作爲子查詢和外部選擇與where條件等級<= 5 –