2017-10-05 88 views
0

回報以下的代碼中的所有記錄: -前5個記錄組中的MS Access

SELECT b.BROKERAGE_NAME, q.VAL_DATE 
FROM TBLQUOTESNEW q LEFT JOIN TBLBROKERAGESNEW b ON q.BROKERAGE_ID = b.ID 
WHERE q.VAL_DATE Is Not Null 

是否有可能有前5個記錄每個BROKERAGE_NAME返回,其中VAL_DATE是降?

包括

Brokerage A 02/10/2017 
    Brokerage A 02/10/2017 
    Brokerage A 02/10/2017 
    Brokerage A 02/10/2017 
    Brokerage A 01/10/2017 
    Brokerage B 06/06/2016 

排除(如不頂5)

Brokerage A 30/09/2017 
+0

我會使用'SELECT TOP 5'&'ORDER BY VAL_DATE DESC'建議,但只有當你的日期有不同的時間範圍時纔有效。因爲它是2/10/2017將是第一名,並且30/09/2017將是第二名。 –

+0

評論http://allenbrowne.com/subquery-01.html,前n組每個部分 –

+2

可能重複[前n組訪問中的每個組sql記錄](https://stackoverflow.com/questions/41220690/top -n-records-per-group-sql-in-access) –

回答

0
SELECT TOP 5 
     b.BROKERAGE_NAME, 
     q.VAL_DATE 
FROM 
     TBLQUOTESNEW q 
LEFT JOIN 
     TBLBROKERAGESNEW b 
     ON q.BROKERAGE_ID = b.ID 
WHERE 
     q.VAL_DATE Is Not Null 
GROUP BY 
     BROKERAGE_NAME 
ORDER BY 
     VAL_DATE DESC` 
+0

這不會返回問題中指定的結果。它返回前五名經紀人。不是每個經紀商的前5名VAL_DATE。 – user1936588

+0

這是因爲你的樣本數據只有經紀人A - 他可能和我做的一樣,只是複製你的樣本並且使用它。完全忽略了你希望它被經紀人分割。 :) –

+0

@ DarrenBartrup-Cook - 改進的樣本數據:) – user1936588