Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Создание порядкового номера  [new]
Lamborg
Member

Откуда:
Сообщений: 31
Добрый день всем.
Нужно решение простой задачи:
есть таблица, в первом столбце стоит товар, во втором столбце - его количество.
Нужен запрос или обработка, которая будет генерировать уникальный порядковый номер для каждой отдельной единицы = кол-ву товара вобщем.
То есть есть товар А в кол-ве 150 штук и товар Б в кол-ве 20 штук.
Должно быть 170 уникальных номеров, от 01 до 170.
Затем на основе этих номеров будут генерироваться серийники в отчете.

И попутно: как вывести текущий год через CAST (DATEPART) в формате не "2014", а просто "14"?

Большое спасибо всем кто откликнеться.
18 июн 14, 13:39    [16181999]     Ответить | Цитировать Сообщить модератору
 Re: Создание порядкового номера  [new]
Glory
Member

Откуда:
Сообщений: 104751
Lamborg
Должно быть 170 уникальных номеров, от 01 до 170.

Простая таблица с порядковыми номерами от 1 до скажем 1000 вам поможет
18 июн 14, 13:49    [16182090]     Ответить | Цитировать Сообщить модератору
 Re: Создание порядкового номера  [new]
Lamborg
Member

Откуда:
Сообщений: 31
Glory,
В том то и дело: нужно генерировать именно такое кол-во записей, равное кол-ву...
18 июн 14, 13:57    [16182166]     Ответить | Цитировать Сообщить модератору
 Re: Создание порядкового номера  [new]
_TempFox_
Member

Откуда: из норы
Сообщений: 33
Lamborg
И попутно: как вывести текущий год через CAST (DATEPART) в формате не "2014", а просто "14"?
Функцией RIGHT взять 2 последних символа.
18 июн 14, 13:59    [16182181]     Ответить | Цитировать Сообщить модератору
 Re: Создание порядкового номера  [new]
Glory
Member

Откуда:
Сообщений: 104751
Lamborg
В том то и дело: нужно генерировать именно такое кол-во записей, равное кол-ву...

И что мешает взять из заранее созданной таблицы "именно такое кол-во записей, равное кол-ву" ?
18 июн 14, 14:01    [16182206]     Ответить | Цитировать Сообщить модератору
 Re: Создание порядкового номера  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4893
Glory,

Я бы предложил не таблицу, а виртуальную вьюху

WITH N100 AS 
( -- цифры от 0 до 99
	SELECT 0 AS N
	UNION ALL 
	SELECT N100.N + 1 FROM N100
	WHERE N100.N < 99
) -- цифры от 0 до 9999
SELECT N = N1.N * 100 + N2.N FROM N100 AS N1, N100 AS N2
ORDER BY N
18 июн 14, 14:21    [16182384]     Ответить | Цитировать Сообщить модератору
 Re: Создание порядкового номера  [new]
Glory
Member

Откуда:
Сообщений: 104751
a_voronin
Я бы предложил не таблицу, а виртуальную вьюху

Чтобы сервер не простаивал зазря и каждый раз генерировал таблицу простых чисел ?
18 июн 14, 14:24    [16182409]     Ответить | Цитировать Сообщить модератору
 Re: Создание порядкового номера  [new]
PaNik
Member

Откуда: Москва
Сообщений: 1143
Lamborg
Glory,
В том то и дело: нужно генерировать именно такое кол-во записей, равное кол-ву...


в этой книге целая глава посвящена решению Вашей проблемы
18 июн 14, 14:24    [16182410]     Ответить | Цитировать Сообщить модератору
 Re: Создание порядкового номера  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4893
Glory
a_voronin
Я бы предложил не таблицу, а виртуальную вьюху

Чтобы сервер не простаивал зазря и каждый раз генерировал таблицу простых чисел ?


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

P.S. "Физкультура для процессора" это новый термин
18 июн 14, 14:31    [16182472]     Ответить | Цитировать Сообщить модератору
 Re: Создание порядкового номера  [new]
Glory
Member

Откуда:
Сообщений: 104751
a_voronin
А в вашем случае, чтобы диск не застаивался, а занимался чтением, или чтобы кеш не пустой был

А вашем случае я так понимаю ни диск, ни память не используется.
Даже для хранения текста "виртуальной вьюхи"
18 июн 14, 14:33    [16182493]     Ответить | Цитировать Сообщить модератору
 Re: Создание порядкового номера  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4893
Glory
a_voronin
А в вашем случае, чтобы диск не застаивался, а занимался чтением, или чтобы кеш не пустой был

А вашем случае я так понимаю ни диск, ни память не используется.
Даже для хранения текста "виртуальной вьюхи"


Давайте мега стресс-тест проведем, что жрет больше ресурсов, таблица с цифрами или виртуальная вьюха.
18 июн 14, 14:59    [16182756]     Ответить | Цитировать Сообщить модератору
 Re: Создание порядкового номера  [new]
Glory
Member

Откуда:
Сообщений: 104751
a_voronin
Давайте мега стресс-тест проведем, что жрет больше ресурсов, таблица с цифрами или виртуальная вьюха.

Проводите у себя что угодно. Если нечем заняться.
18 июн 14, 15:02    [16182784]     Ответить | Цитировать Сообщить модератору
 Re: Создание порядкового номера  [new]
invm
Member

Откуда: Москва
Сообщений: 9825
a_voronin
Давайте мега стресс-тест проведем, что жрет больше ресурсов, таблица с цифрами или виртуальная вьюха.
А тут даже стресс-тест не нужен. Оцените количество чтений для вашего же запроса с таблицей и с вьюхой.
18 июн 14, 15:49    [16183275]     Ответить | Цитировать Сообщить модератору
 Re: Создание порядкового номера  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
a_voronin
Я бы предложил не таблицу, а виртуальную вьюху
И снова здравствуйте.
Но что-то лень искать тот топик с тестами.
a_voronin
А в вашем случае, чтобы диск не застаивался, а занимался чтением, или чтобы кеш не пустой был.
Теоретик, сразу понятно.
a_voronin
Давайте мега стресс-тест проведем
Нам то чё, мы уже тут на форумах неоднократно проводили.
Ищите, проводите.
invm
А тут даже стресс-тест не нужен.
Он думает что CTE волшебным образом работает.

a_voronin, мы и сами хотели чтобы генерировался идеальный код наоптимизированный по самые помидоры под конкретное железо. Плять это сложная неблагодарная задача. M$ не занимается научными и инженерными задачами - оно больше бабло любит рубить. Всё получается поскольку-постольку. Да и система должна быть предсказуемой и стабильной.
19 июн 14, 04:06    [16186548]     Ответить | Цитировать Сообщить модератору
 Re: Создание порядкового номера  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Нашёл: 11347386
19 июн 14, 04:21    [16186551]     Ответить | Цитировать Сообщить модератору
 Re: Создание порядкового номера  [new]
Lamborg
Member

Откуда:
Сообщений: 31
PaNik,
а случаем нет этой книги в электронном варианте? Покупать сейчас ради одной главы смысла нет.
19 июн 14, 16:45    [16190798]     Ответить | Цитировать Сообщить модератору
 Re: Создание порядкового номера  [new]
Glory
Member

Откуда:
Сообщений: 104751
Lamborg
Покупать сейчас ради одной главы смысла нет.

А вы все главы прочитайте.
19 июн 14, 16:49    [16190830]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить