Увеличьте значение от 1 до вперед на основе другого поля в SQL

#sql #sql-server #sql-server-2012

#sql #sql-сервер #sql-сервер-2012

Вопрос:

ID Результат
KLLR 1
KLLR 2
KLLR 3
KLLR 4
OLRQ 1
OLRQ 2
ПКРД 1
ПКРД 2
ПКРД 3

Значение приращения SQL от 1 до и далее на основе других полей, и результатом является выходное вычисляемое поле. Пожалуйста, просмотрите изображение для большей четкости. А ниже приведен мой SQL, который я пробовал. Я хочу, чтобы результат был в другом вычисляемом поле, как вы можете видеть на изображении.

 SELECT id, SUM(COUNT(id)) AS result FROM t1  GROUP BY id  

Комментарии:

1. Пожалуйста, пометьте соответствующим образом. MySQL и SQL Server-это совершенно разные продукты с разными диалектами SQL.

Ответ №1:

Простой номер строки должен работать для вас здесь:

 SELECT id,  ROW_NUMBER() OVER (PARTITION BY id ORDER BY id) AS Result FROM t1;  

Вы отметили как MySQL, так и SQL Server. Обратите внимание, что это совершенно разные продукты, но одно и то же должно работать в обоих. MySQL представлен ROW_NUMBER() в версии 8.0.

К комментарию Хансга,

 SELECT id,  ROW_NUMBER() OVER (PARTITION BY id ORDER BY (SELECT NULL)) AS Result FROM t1;  

даст вам упомянутый случайный порядок.

Комментарии:

1. Спасибо, что ответили. Однако я получил эту ошибку после написания приведенного выше запроса «Msg 4112, уровень 15, Состояние 1, Строка 1 Функция ‘ROW_NUMBER’ должна иметь предложение OVER с ПОРЯДКОМ ПО».

2. Тогда вам нужно знать версию и фактическую СУБД

3. Вы можете добавить заказ по (ВЫБЕРИТЕ NULL) для случайного заказа или использовать любой столбец, который вы хотите заказать, указав имя

4. Я использую SQL Server 2012.

5. @SalmanSabir Я исправил твои теги. Я также исправил свой пост, см. Обновление. Извините, я изначально пропустил ЗАКАЗ МИМО ушей….