Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / как заполнить автоматически колонку указав стартовое число и конечное / 22 сообщений из 22, страница 1 из 1
28.02.2018, 12:46
    #39608415
kolyady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как заполнить автоматически колонку указав стартовое число и конечное
Тобиш указываю 1 и 10 и колонко автоматом заполняется на
1
2
3
4
5
6
7
8
9
10
...
Рейтинг: 0 / 0
28.02.2018, 12:47
    #39608417
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как заполнить автоматически колонку указав стартовое число и конечное
kolyady,

а если строк 1000?
...
Рейтинг: 0 / 0
28.02.2018, 12:56
    #39608425
kolyady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как заполнить автоматически колонку указав стартовое число и конечное
TaPaK,

да хоть милион , к чему вопрос?
...
Рейтинг: 0 / 0
28.02.2018, 12:57
    #39608429
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как заполнить автоматически колонку указав стартовое число и конечное
kolyady,

в 11 строке что будет?
...
Рейтинг: 0 / 0
28.02.2018, 13:00
    #39608431
kolyady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как заполнить автоматически колонку указав стартовое число и конечное
TaPaK,

не понял вопроса?
диапазон с 1 по 10 (на примере) логично что 11 не будет
...
Рейтинг: 0 / 0
28.02.2018, 13:03
    #39608432
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как заполнить автоматически колонку указав стартовое число и конечное
kolyadyTaPaK,

не понял вопроса?
диапазон с 1 по 10 (на примере) логично что 11 не будет
как же это утомляет

уходи
Код: sql
1.
2.
3.
4.
5.
DECLARE @s INT = 1,
	@f INT = 10

SELECT (ROW_NUMBER() OVER(ORDER BY 1/0) - 1) % (@f-@s +1 ) + 1 + (@s - 1)
FROM sys.objects
...
Рейтинг: 0 / 0
28.02.2018, 13:34
    #39608446
kolyady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как заполнить автоматически колонку указав стартовое число и конечное
TaPaK,

вместо 10 залило 4000 строк повторяя с 1 по 10
...
Рейтинг: 0 / 0
28.02.2018, 13:39
    #39608450
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как заполнить автоматически колонку указав стартовое число и конечное
kolyadyTaPaK,

вместо 10 залило 4000 строк повторяя с 1 по 10
хорошо что таких много :)
...
Рейтинг: 0 / 0
28.02.2018, 13:55
    #39608464
Minamoto
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как заполнить автоматически колонку указав стартовое число и конечное
...
Рейтинг: 0 / 0
28.02.2018, 13:56
    #39608466
Невский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как заполнить автоматически колонку указав стартовое число и конечное
kolyadyTaPaK,

вместо 10 залило 4000 строк повторяя с 1 по 10

Так он ведь и спрашивал, сколько строк нужно :-) Я тоже понял, что количество строк не важно, главное что бы числа шли от 1 до 10 в цикле. Если нужно было только 10 строк, то добавь в селект top 10 например :-) А если нужен обычный счетчик в таблице, то можно в поле объявить IDENTITY(1,1).
...
Рейтинг: 0 / 0
28.02.2018, 14:02
    #39608474
kolyady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как заполнить автоматически колонку указав стартовое число и конечное
Невский,

допустим есть :
стартовое число = 1002345
конечное число = 2006589

мне нужно заполнить таблице всеми числами которые между ними, включая их.
Мне не нужно:
-чтобы они повторялись
чтобы было больше или меньше указаного диапазона
2006589-1002345= 1004244 - количество строк в итоге
...
Рейтинг: 0 / 0
28.02.2018, 14:04
    #39608475
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как заполнить автоматически колонку указав стартовое число и конечное
вам уже всё подсказали, выбирете готовое решение
...
Рейтинг: 0 / 0
28.02.2018, 14:04
    #39608476
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как заполнить автоматически колонку указав стартовое число и конечное
*выберите
...
Рейтинг: 0 / 0
28.02.2018, 14:04
    #39608477
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как заполнить автоматически колонку указав стартовое число и конечное
kolyady,

21224799 что ещё
...
Рейтинг: 0 / 0
28.02.2018, 15:32
    #39608547
Невский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как заполнить автоматически колонку указав стартовое число и конечное
kolyadyНевский,

допустим есть :
стартовое число = 1002345
конечное число = 2006589

мне нужно заполнить таблице всеми числами которые между ними, включая их.
Мне не нужно:
-чтобы они повторялись
чтобы было больше или меньше указаного диапазона
2006589-1002345= 1004244 - количество строк в итоге

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
WITH
TENS      (N) AS (SELECT 0 UNION ALL SELECT 0 UNION ALL SELECT 0 UNION ALL SELECT 0 UNION ALL SELECT 0 UNION ALL
                  SELECT 0 UNION ALL SELECT 0 UNION ALL SELECT 0 UNION ALL SELECT 0 UNION ALL SELECT 0),
THOUSANDS (N) AS (SELECT 1 FROM TENS t1 CROSS JOIN TENS t2 CROSS JOIN TENS t3),
MILLIONS  (N) AS (SELECT 1 FROM THOUSANDS t1 CROSS JOIN THOUSANDS t2),
TenMillion(N) AS (SELECT 1 FROM MILLIONS CROSS JOIN TENS),
TALLY     (N) AS (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 0)) FROM TenMillion)
SELECT TOP (2006589-1002345) (1002344) + N FROM TALLY;
...
Рейтинг: 0 / 0
28.02.2018, 17:11
    #39608621
kolyady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как заполнить автоматически колонку указав стартовое число и конечное
Невский,

вот все не то, я понимаю что можно и так как в примерах, я просто когда то видел решение буквально в виде 2 строчек кода, оно и работало мгновенно и мега простое. Функция подойдет опять же для небольшого диапазона, на 10 млн она загибается.

Понимаю что чего то хочу но непонятно чего, просто надеялся что кто то скинет эти 2 строчки ну или на подобии :(
...
Рейтинг: 0 / 0
28.02.2018, 17:14
    #39608623
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как заполнить автоматически колонку указав стартовое число и конечное
страдалец,
создай таблицу чисел и выбери по диапозону обычным селектом
...
Рейтинг: 0 / 0
28.02.2018, 17:18
    #39608625
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как заполнить автоматически колонку указав стартовое число и конечное
kolyady,

статическая таблица чисел, один раз создал и пользуйся везде... быстрее ничего не будет
простой но не самый быстрый способ создания
Код: sql
1.
2.
3.
4.
CREATE TABLE dbo.Numbers (N INT)
GO
INSERT INTO dbo.Numbers DEFAULT VALUES 
GO 10000000
...
Рейтинг: 0 / 0
28.02.2018, 17:41
    #39608637
Невский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как заполнить автоматически колонку указав стартовое число и конечное
kolyadyНевский,

вот все не то, я понимаю что можно и так как в примерах, я просто когда то видел решение буквально в виде 2 строчек кода, оно и работало мгновенно и мега простое. Функция подойдет опять же для небольшого диапазона, на 10 млн она загибается.

Понимаю что чего то хочу но непонятно чего, просто надеялся что кто то скинет эти 2 строчки ну или на подобии :(

Ну у меня на обычном серваке для отчетности твой диапазон отработал за секунду. 10 млн в таблицу вставились за 11 сек. Тебя смущает большой синтаксис? Сохрани скрипт как функцию и вызывай ее всего одной строчкой :-)
...
Рейтинг: 0 / 0
28.02.2018, 17:58
    #39608653
bideveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как заполнить автоматически колонку указав стартовое число и конечное
TaPaKkolyady
Код: sql
1.
2.
3.
4.
CREATE TABLE dbo.Numbers (N INT)
GO
INSERT INTO dbo.Numbers DEFAULT VALUES 
GO 10000000



Только, наверно

Код: sql
1.
CREATE TABLE dbo.Numbers (N INT IDENTITY)
...
Рейтинг: 0 / 0
28.02.2018, 18:02
    #39608660
kolyady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как заполнить автоматически колонку указав стартовое число и конечное
итог:

по быстродействии ничего лучшего не нашел :

IF OBJECT_ID(N'dbo.GetNums', N'IF') IS NOT NULL DROP FUNCTION dbo.GetNums;
GO
CREATE FUNCTION dbo.GetNums(@low AS BIGINT, @high AS BIGINT) RETURNS TABLE
AS
RETURN
WITH
L0 AS (SELECT c FROM (SELECT 1 UNION ALL SELECT 1) AS D(c)),
L1 AS (SELECT 1 AS c FROM L0 AS A CROSS JOIN L0 AS B),
L2 AS (SELECT 1 AS c FROM L1 AS A CROSS JOIN L1 AS B),
L3 AS (SELECT 1 AS c FROM L2 AS A CROSS JOIN L2 AS B),
L4 AS (SELECT 1 AS c FROM L3 AS A CROSS JOIN L3 AS B),
L5 AS (SELECT 1 AS c FROM L4 AS A CROSS JOIN L4 AS B),
Nums AS (SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS rownum
FROM L5)
SELECT TOP(@high - @low + 1) @low + rownum - 1 AS n
FROM Nums
ORDER BY rownum;
GO

Можно закрывать тему
...
Рейтинг: 0 / 0
28.02.2018, 18:12
    #39608671
Minamoto
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как заполнить автоматически колонку указав стартовое число и конечное
kolyady, собственно эта функция и была написана, как результат исследований - какой способ быстрее. Правда на этом форуме пару лет назад было обсуждение, и там нашли способы, которые при определенных условиях таки дают боле быстрый результат, но это не точно.
Если уж совсем интересно - можете поискать по названию функции на форуме, только долго искать именно то обсуждение.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / как заполнить автоматически колонку указав стартовое число и конечное / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]