Как добавить столбец с определенным типом числовой последовательности

#sql #sql-server #tsql

Вопрос:

Существует множество ответов на добавление столбца в таблицу с некоторым шагом; например, начните с 1 и увеличьте на 1; например, 1, 2, 3 и т. Д.

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

Например: 100 строк по 1, затем 100 строк по 2 и т.д. До конца таблицы.

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

1. Справедливый комментарий. Я делаю это в excel, но на самом деле я понятия не имею, как это сделать в mssql.

2. Но вы провели кучу исследований, верно? С чем вы столкнулись?

3. Я не смог найти ничего, кроме функции ПОСЛЕДОВАТЕЛЬНОСТИ или обновления таблицы и добавления столбца идентификаторов. Я вроде как не могу придумать, как даже сформулировать это для исследовательских целей, если это имеет смысл?

4. Вам действительно нужно сохранить значение или вы можете вычислить его, когда это потребуется? Если рассказать немного больше о том, как вы его используете, это может дать лучшие ответы.

5. Ну, я экспортирую таблицы в excel, добавляю столбец с последовательностью, а затем повторно импортирую в sql для анализа. Это то, что я хотел бы изменить в реальной таблице, но я мог бы жить с видом. Редактировать: использование трудно описать, но мне нужно создать своего рода «пакетированный» столбец, чтобы провести некоторый анализ дубликатов с различными типами исходной таблицы.

Ответ №1:

Варианты, основанные на том, что вы сказали:

  1. Создайте представление и сгенерируйте порядковый номер с помощью row_number() over ()/100
  2. Создайте обычный identity столбец, а затем создайте вычисляемый столбец, который является вашим столбцом идентификаторов, разделенным на 100 с помощью целочисленного деления.
  3. Создайте обычный int столбец и запустите обновление вручную, используя row_number() over ()/100 его .

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

1. Все в порядке, вы новичок, вот почему я упомянул об этом 🙂 действительно ли мой ответ позволил вам решить вашу проблему? Пожалуйста, вернитесь и к вашему другому вопросу.

2. Я не могу проверить это до завтра. Я отвечу на другой мой вопрос, спасибо.

3. Хорошо, вам не нужно принимать ответ, пока вы не решите, что он решает вашу проблему — спешки нет, — но вы также можете отказаться от ответа позже, если сочтете его неподходящим.

4. Я создал фиктивную таблицу имен, любимого цвета и добавил столбец идентификаторов, чтобы сохранить любой вид, который я хочу, нетронутым. Интересно, что использование приведенного ниже (просто ваш первый шаг, в значительной степени) дает именно то, что мне нужно, за исключением начального отрезка нулей, которые на 1 меньше, чем «некоторое число»: ВЫБЕРИТЕ ROW_NUMBER () ПОВЕРХ(ПОРЯДОК ПО идентификатору)/(некоторое число) КАК rn, * ИЗ dummytbl

5. (row_number() over ()/100) 1 ?