SQL Incremenet и сброс вставки переменных - PullRequest
0 голосов
/ 20 июня 2011

Я, вероятно, пропустил что-то простое с моей проблемой. Однако я люблю не обращать внимания на любые мелкие детали. Но я долго искал и не сталкивался с чем-то похожим на мою проблему.

Настройка: SQL 2005, хранимая процедура.

У меня есть таблица, которая часто обновляется при попытках вызова. Использование UNIQUEIDENTIFIER, чтобы связать все записи вместе, т.е.

xxx-xxx-xxx-xxx-xxxx | 20/06/2011 12:00 | 10

Я хочу иметь хранимую процедуру, которая захватывает все записи и сортирует их по UNIQUEIDENTIFIER и в то же время производит счетчик попыток. т.е. * +1008 *

1111-1111-1111-1111    | 20/06/2011 12:05    |  10 | 0    
1111-1111-1111-1111    | 20/06/2011 12:06    |  30 | 1   
2222-2222-2222-2222    | 20/06/2011 12:10    | 120 | 0  
3333-3333-3333-3333    | 20/06/2011 12:20    |  50 | 0

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

Любая помощь приветствуется.

С уважением Chris

Ответы [ 2 ]

3 голосов
/ 20 июня 2011

Вы можете использовать ROW_NUMBER .

например,

SELECT ID, DateField, FieldA, 
    ROW_NUMBER() OVER(PARTITION BY ID ORDER BY DateField ASC) AS Counter
FROM YourTable
ORDER BY ID, DateField

PARTITION BY в основном сбрасывает счетчик для каждого отдельного идентификатора, а следующий ORDER BY гарантирует, что счетчикприсваивается постепенно в порядке даты.Обратите внимание, что это будет счетчик, начиная с 1 каждый раз.Если вы хотите, чтобы он начинался с 0, вы можете просто вычесть 1 в SELECT

0 голосов
/ 20 июня 2011

Не могли бы вы использовать выражение "group by" (с числом) в SQL?

Вы можете использовать "order by" для выполнения сортировки (хотя егоНепонятно, как SQL реализует это или как его использовать) .

Кроме того, заголовок вопроса, кажется, не соответствует тому, что вы спрашиваете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...