2015-07-21 47 views
0
SELECT TOP 10 [FINAL_FOR_DB].[Indemnity_Paid]/[FINAL_FOR_DB].[Claim_Count] AS Indemnity_Cost, 
final_for_db.Claimant_Name, 
final_for_db.Account_Name, 
final_for_db.Claim_ID, 
final_for_db.File_Date, 
final_for_db.Resolution_Date, 
final_for_db.Claim_Status, 
final_for_db.State_Filed, final_for_db.Expense_Amount, 
final_for_db.Claim_Count, 
final_for_db.Indemnity_Paid AS [Total Indemnity] 
FROM final_for_db 
WHERE (((final_for_db.Account_Name)="Exxon")) 
ORDER BY [FINAL_FOR_DB].[Indemnity_Paid]/[FINAL_FOR_DB].[Claim_Count] DESC; 

這樣做只會給我埃克森前10項,但我不知道是否有一種方式來獲得前10項的每個帳戶從最大的賠償成本最低的名字。我相信需要子查詢。我將不勝感激任何幫助。謝謝十大子查詢中訪問SQL

+0

什麼dbserver miseur?可能Softie先生 – Drew

+2

Access,Mysql和Sql-Server是三種截然不同的RDBMS。如果您使用「Access」,那麼請丟失Mysql和sql-server標籤。 – JNevill

+0

@JNEvill我指的是Access。我的錯誤 – krnactry

回答

0

其他RDBMS支持RANK()和ROW_NUMBER()函數。不幸的是,Access沒有(據我所知)。這應該讓你接近你想要的。它不能很好地處理重複項目(兩個具有相同賠償成本的客戶將獲得相同的排名,可能會讓您進入前11名左右)。

Select * From 
(
    Select * 
     , (
      Select count(*) 
      From final_for_db as tbl2 
      where (tbl1.Indemnity_Paid/tbl1.Claim_Count) < (tbl2.Indemnity_Paid/tbl2.Claim_Count) 
       and tbl1.Account_Name= tbl2.Account_Name 
     ) + 1 as rank from final_for_db tbl1 
) x where x.Rank < 10 
+0

無法運行此查詢 – krnactry

+0

請嘗試立即運行;我把它清理了一下。 – SteveR

+0

@StevenR它說無效的參數功能 – krnactry