2013-03-14 49 views
0

在MS Access 2000中,我有一個名爲[堆棧跟蹤]從我應該隨機拉400個記錄具有鮮明的文本列一個表。 我看着在here一個例子,並增加了自動編號字段表和寫如下面的查詢:的MS Access - 文本字段排名

假設[評價名]是所需的不同字段和ID是autonumbered主鍵,又該查詢是否可以查找其中一個文本字段具有不同值的隨機400記錄?

第一個查詢沒有區別[評估名稱]。

SELECT Top 400 * 
FROM (SELECT *, 
      Rnd(ID) AS RandomValue 
     FROM [Street Data]) 
ORDER BY RandomValue ASC 

我知道我可以很容易地在與Rank操作的SQL Server中實現。我沒有看到任何有用的鏈接來查找varchar/text字段的排名。我試圖找到使用下面的查詢排名。它沒有解決。

SELECT 
    ID, 
    [Appraiser Name], 
    (
     SELECT COUNT(*) 
     FROM [Street Data] WHERE 
     [Appraiser Name] <= T.[Appraiser Name] 
    ) AS Rank 
FROM [Street Data] AS T 
ORDER BY ID, [Appraiser Name] 

任何幫助表示讚賞。

回答

0

我解決了一些問題。但是,如果有任何簡單的方法可以做到這一點,我很歡迎。我創建了三個查詢。第一個找到評估師姓名的排名,第二個找到評估師姓名的區別,第三個是最終查詢。我試圖使用排名= 1的查詢中的第一個,它給了我加入不支持錯誤。那很不好。當我創建了rank = 1的另一個查詢,然後在最後一個查詢中使用它時,它工作正常。

StreetData_Appraiser

SELECT ID, [Appraiser Name], (
     SELECT COUNT([Appraiser Name]) 
     FROM [Street Data] 
WHERE [Appraiser Name] = T.[Appraiser Name] 
AND ID <= T.ID 
    ) AS Rank 
FROM [Street Data] AS T 
ORDER BY ID, [Appraiser Name] 

StreetData_Distinct_Appraiser(查詢掩蓋第一個查詢只顯示重複的記錄,避免無效加入錯誤)

SELECT * FROM StreetData_Appraiser WHERE Rank = 1 

最終查詢

SELECT TOP 400 * 
FROM (SELECT ST.*, 
      Rnd(ST.ID) AS RandomValue 
     FROM [Street Data] AS ST 
     INNER JOIN [StreetData_Distinct_Appraiser] AS SA ON SA.ID=ST.ID) AS STRecs 
ORDER BY RandomValue