2016-05-30 2 views
1

Я попытался сделать запрос, который создал столбец, который увеличивался каждый раз, когда значение в столбце было более одного раза.SQL Access count дублирует без идентификатора столбца

Так у меня есть:

Col1

99999999 
99999999 
88888888 
88888888 
88888888 
77777777 

И хотел бы результат:

Col1  Col2 
99999999  1 
99999999  2 
88888888  1 
88888888  2 
88888888  3 
77777777  1 

У меня была SQL, которые могли бы сделать это, когда у меня есть поле ID:

SELECT 
    m.PN, 
    m.CLASS, 
    m.ZAHL, 
    Count(M2.id) AS IncByPN 
FROM Table1 AS m 
    INNER JOIN Table1 AS m2 ON m2.PN = m.PN AND m2.ID <= m.ID 
WHERE m.CLASS 
GROUP BY m.ID, m.CLASS, m.PN, m.ZAHL 
ORDER BY m.ID 

Теперь у меня есть таблеток e, где в нем нет столбца идентификатора. Как мне это сделать?

ответ

1

Вы можете использовать коррелировать запрос вместо объединения:

SELECT 
    m.PN, 
    m.CLASS, 
    m.ZAHL, 
    (SELECT Count(M2.id) + 1 AS IncByPN FROM Table1 m2 
    WHERE m.PN = m2.PN AND m2.ID <= m.ID) 
FROM Table1 m 
ORDER BY m.ID 
+0

@TimBeigeleisen Вы уверены, что +1? Я использовал '<=' или, может быть, я что-то упустил: S – sagi

+0

Проблема в том, что у меня нет столбца идентификатора - могу ли я использовать этот коррелированный запрос? – Jmorte13

+0

Извините, я не слишком хорошо знаком с доступом, поэтому не знаю, какие функции у меня есть. Существует ли ROW_NUMBER() '? @ Jmorte13 – sagi

0

.. сделать запрос, созданный столбец, который увеличивается на единицу каждый раз, когда значение в колонне был там несколько раз.

Вы не можете использовать запрос для этого, так как записи не имеют порядка. Таблица не является таблицей.

Но в VBA вы можете открыть recordset с заказами. Это «исправит» записи для этого сеанса. Затем пропустите записи и назначьте свой счет для каждой записи.

Смежные вопросы