Goran Bibic Ответов: 1

Создать автоматический счетчик 1, 2, 3, 4, 5...и т. д.


I need to insert new first column counter
1
2
3
4
5
6..etc in this code


Что я уже пробовал:

String saveStaff = " Select  roba as 'Naziv artikla', SUM (cast(kolicina as float)) as 'Kolicina' from (select roba, kolicina from mp_racun_roba union all select roba, kolicina from mp_faktura_roba) as alltables group by roba";  

1 Ответов

Рейтинг:
6

Wendelius

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

Один из способов сделать это-использовать определение идентификатора для столбца. Взгляните на это IDENTITY (Property) (Transact-SQL) | Microsoft Docs[^]


Goran Bibic

Я попробую это сделать

Выберите функции row_number() над (раздел по kolicina заказа Роба убыв) как redni_broj', Роба как Naziv artikla', сумма (литой(kolicina как поплавок)) как Kolicina' из (выбрать Роба, kolicina от mp_racun_roba объединить все выбрать Роба, kolicina от mp_faktura_roba) как alltables группы Роба

Ошибка Msg 8120, Уровень 16, состояние 1, строка 1
Столбец "alltables.kolicina" недопустим в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY.

Wendelius

Я не совсем понимаю, что ты хочешь этим сказать... Однако вы смешиваете обычный goup с оконной функцией, имеющей другую группировку, отсюда и ошибка.

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

Goran Bibic

Да...просто 1,2,3,,,,,

Wendelius

Простите, но я не совсем понимаю ваш ответ.

Как уже было сказано, Если вам нужно уникальное нумерованное поле, я бы предложил позволить базе данных создать это значение, например, используя определение идентификатора.

Goran Bibic

Хорошо. Какой-нибудь пример?

Wendelius

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

Goran Bibic

Спасибо

Wendelius

Всегда пожалуйста!