2014-02-20 4 views
5

Как достичь номер строки над раздела, в MS доступа .I Google, но не могу найти информацию вы можете, пожалуйста, как это сделатьДостижение row_number/PARTITION BY в MS Access

RowNumber Over(Partition by city Order By EmployeeID) 

Мои данные выглядит следующим образом

DOC_TYPE Ino 
3a 1800xxc1 
3b 1810xxc2 
3c 1700xxc3 
3a 1700xxc4 
3a 1800xxc5 
3a 1800xxc6 
3b 1800xxc7 

Мне нужно Как это

DOC_TYPE Ino Seq 
3a 1800xxc1 1 
3a 1700xxc4 2 
3a 1800xxc5 3 
3a 1800xxc6 4 
3b 1810xxc2 1 
3b 1800xxc7 2 
3c 1700xxc3 1 

это мой запрос

SELECT t1.RT_TAXCODE, t1.INV_NO, COUNT(*) AS Sno 
FROM GroupByTAXCODE AS t1 INNER JOIN GroupByTAXCODE AS t2 ON (t2.RT_TAXCODE = t1.RT_TAXCODE) AND (t2.Inv_no <= t1.Inv_no) 
GROUP BY t1.RT_TAXCODE, t1.INV_NO 
HAVING COUNT(*)=1 
ORDER BY 1, 3; 

Это занимает больше времени, как е 30 секунд

+0

Вы не нашли что-нибудь? Если I Googled (access row_number over partition), первая найденная ссылка говорит, что Access не поддерживает это соглашение (первоначально из Oracle). Но было предложено несколько обходных решений. http://www.tek-tips.com/viewthread.cfm?qid=1615753 –

+0

Является ли [GroupByTAXCODE] самим запросом (в отличие от фактической таблицы)? –

+0

Да, это запрос – saikri

ответ

6

Во многих случаях мы можем достичь подобного результата, выполняя неравный автообъединение на столе и агрегирование результатов. Например, для данных в таблице с именем [MyData]

Ino TYPE  DOC 
--- -------- --- 
    1 1800xxc1 3a 
    2 1810xxc2 3b 
    3 1700xxc3 3c 
    4 1700xxc4 3a 
    5 1800xxc5 3a 
    6 1800xxc6 3a 
    7 1800xxc7 3b 

запросе

SELECT 
    t1.DOC, 
    t1.TYPE, 
    COUNT(*) AS [Ino Seq] 
FROM 
    MyData AS t1 
    INNER JOIN 
    MyData AS t2 
     ON t2.DOC = t1.DOC 
      AND t2.Ino <= t1.Ino 
GROUP BY 
    t1.DOC, 
    t1.TYPE 
ORDER BY 1, 3 

возвращается

DOC TYPE  Ino Seq 
--- -------- ------- 
3a 1800xxc1  1 
3a 1700xxc4  2 
3a 1800xxc5  3 
3a 1800xxc6  4 
3b 1810xxc2  1 
3b 1800xxc7  2 
3c 1700xxc3  1 
+0

Im, получающий пустую запись, мой идентификатор сотрудника - это строка и город также строка – saikri

+0

@saikri Не должно иметь значения, если ваш [EmployeeID] является «Text». Я предлагаю вам [изменить] (http://stackoverflow.com/posts/21917637/edit) ваш вопрос включить некоторые примеры данных и запрос, который вы пытались использовать. –

+0

Проверить сейчас Пожалуйста. – saikri