powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / пронумеровать null значения в столбце, остальные оставить прежними
12 сообщений из 12, страница 1 из 1
пронумеровать null значения в столбце, остальные оставить прежними
    #40028324
marusya116
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ДД! Есть таблица

table
name id
Andrew 1
Igor 2
arkadiy 3
Ivan null
Dmitri null

как присвоить id двум последним используя row_number
isnull(id, row_number() over (order by id))
не подходит
...
Рейтинг: 0 / 0
пронумеровать null значения в столбце, остальные оставить прежними
    #40028331
Oleg_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
marusya116,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DECLARE @t TABLE ([Name] varchar(50), Id int);

INSERT INTO @t
VALUES( 'Vasya', 1 ), ( 'Petya', 2 ), ( 'Sara', 3 ), ( 'Chaves', NULL ), ( 'Inga', NULL );

SELECT [Name],
           CASE
                WHEN ID IS NULL 
                THEN ROW_NUMBER() OVER(ORDER BY 1 / 0)
              ELSE ID
           END AS ID
FROM @t;
...
Рейтинг: 0 / 0
пронумеровать null значения в столбце, остальные оставить прежними
    #40028335
marusya116
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oleg_SQL, привет) нельзя использовать case и iif (
...
Рейтинг: 0 / 0
пронумеровать null значения в столбце, остальные оставить прежними
    #40028336
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
marusya116,

Код: sql
1.
2.
3.
4.
..
    isnull(id, row_number() over (order by id desc, [name])) id_1,
    isnull(id, row_number() over (order by isnull(cast(id as bigint), cast(1e18 as bigint)), [name])) id_2,
...
...
Рейтинг: 0 / 0
пронумеровать null значения в столбце, остальные оставить прежними
    #40028339
Oleg_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
marusya116
Oleg_SQL, привет) нельзя использовать case и iif (


и как я сразу не догадался ))

А числа должны быть по порядку? т.е. может быть вместо 1, 2, 3, NULL, NULL что то вроде 7, 4, 22, , NULL, NULL
Если нет, то тогда просто row_number() без всяких проверок
...
Рейтинг: 0 / 0
пронумеровать null значения в столбце, остальные оставить прежними
    #40028346
marusya116
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oleg_SQL,

в общем у тебя есть таблица T2 в которой 1800строк не identity
есть выборка с name

name id
a 1500
b 1400
c null
d null
e null

надо c d e присвоить 1801 1802 1803
...
Рейтинг: 0 / 0
пронумеровать null значения в столбце, остальные оставить прежними
    #40028351
Oleg_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
marusya116,


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
DECLARE @t TABLE(Name VARCHAR(50), 
                 Id   INT);

INSERT INTO @t
VALUES ('Vasya', 1000), ('Petya', 1400), ('Sara', 1800), ('Chaves', NULL), ('Inga', NULL);
SELECT Name, 
       ID
  FROM @t
 WHERE ID IS NOT NULL
UNION ALL
SELECT Name, 
       ROW_NUMBER() OVER(ORDER BY 1 / 0) + (SELECT MAX(ID) FROM @t)
  FROM @t
 WHERE ID IS NULL;
...
Рейтинг: 0 / 0
пронумеровать null значения в столбце, остальные оставить прежними
    #40028355
marusya116
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oleg_SQL,
черз юнион нельзя у меня там джоинов много
...
Рейтинг: 0 / 0
пронумеровать null значения в столбце, остальные оставить прежними
    #40028356
Oleg_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
marusya116
Oleg_SQL,
черз юнион нельзя у меня там джоинов много


Где там? ))

если обернуть скобками (SELECT ... UNION... SELECT) AS T2 и далее свои JOIN - так нельзя?
...
Рейтинг: 0 / 0
пронумеровать null значения в столбце, остальные оставить прежними
    #40028359
marusya116
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oleg_SQL,

Там вся соль в том, что все эти столбцы с NULL или нет появляются после джинов
...
Рейтинг: 0 / 0
пронумеровать null значения в столбце, остальные оставить прежними
    #40028360
Oleg_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
marusya116
Oleg_SQL,

Там вся соль в том, что все эти столбцы с NULL или нет появляются после джинов


;WITH CTE AS
(
...
[TAM]
...
JOIN
...
)
SELECT Name, Id
FROM CTE
WHERE ID IS NOT NULL
UNION ALL
....
...
Рейтинг: 0 / 0
пронумеровать null значения в столбце, остальные оставить прежними
    #40028361
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
select
 Name,
 isnull(id, max(id) over () + row_number() over (partition by id * 0 order by 1/0))
from
 @t
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / пронумеровать null значения в столбце, остальные оставить прежними
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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