2013-08-23 17 views
2

重複的實例的數量使用Access 2010中查詢也要算和增加的這個記錄

所以,如果我有一個表

COL1 
A  
B  
A  
C  
A  

和運行查詢我會得到在COL2輸出其中'A'被重複三次並且其COL2值依次遞增。

COL1 | COL2 
A | 1 
B | 1 
A | 2 
C | 1 
A | 3 
+2

您的表是否有ID列? SQL表本質上是無序的,所以您需要另一列來指定排序。 –

+0

它可以很容易地有一個id我已經從簡單的例子中刪除了這個例子 - 所以如果它有一個ID col任何想法? – megaSteve4

回答

3

將一個字段添加到您的表中。選擇AutoNumber作爲其數據類型,並將其作爲表的主鍵。我叫現場ID,所以我對你的樣本數據的版本看起來像這樣...

ID COL1 
1 A 
2 B 
3 A 
4 C 
5 A 

下方回報的SELECT聲明此結果集...

ID COL1 COL2a COL2b 
1 A  1  1 
2 B  1  1 
3 A  2  2 
4 C  1  1 
5 A  3  3 

COL2aCOL2b顯示2種方法來實現相同的結果。 DCount是Access特定的,並且需要圍繞m.COL1文本值引用。第二種方法,COL2b,使用相關的子查詢,所以可以在不同的數據庫中工作,如果你選擇。用這種方法,你不需要爲引用文本值而煩惱。

這兩種方法基本上都需要db引擎爲結果集的每一行運行附加查詢。所以,在一個巨大的桌子上,表現會是一個問題。索引將在那裏幫助。如果還沒有人,請在COL1上添加索引。 ID已經有一個索引,因爲它是主鍵。

如果你不能添加一個字段,並且表中還沒有包含其他合適的字段,那麼我認爲你的運氣不好。您將無法通過Access查詢獲取所需內容。

SELECT 
    m.ID, 
    m.COL1, 
    DCount(
     "*", 
     "MyTable", 
     "COL1 = '" & m.COL1 & "' AND ID <= " & m.ID 
    ) AS COL2a, 
    (
     SELECT Count(*) 
     FROM MyTable AS m2 
     WHERE m2.COL1 = m.COL1 AND m2.ID <= m.ID 
    ) AS COL2b 
FROM MyTable2 AS m 
ORDER BY m.ID;