Это может быть очень простой вопрос, но я просто не могу найти решение.
Вот пример
create table #Example
(
Key1 varchar(55) PRIMARY KEY,
Key2 varchar(55),
Key3 varchar(55),
Key4 varchar(55)
)
insert into #Example
select '1001', '100', NULL, NULL
union all
select '1002', '100', NULL, NULL
union all
select '1003', '200', NULL, NULL
Ключ1 уникален.Мы устанавливаем Key3, используя следующую логику:
with UpdateKey3 as
(
select
Key1, Key2,
ROW_NUMBER() OVER (PARTITION BY Key2 ORDER BY Key1 DESC) as RN
from
#Example
)
update ao
set Key3 = m.Key1
from #Example ao
inner join UpdateKey3 m ON ao.Key2 = m.Key2
where m.RN = 1
Таблица выглядит следующим образом
Я хочу, чтобы Key4 был:
Поскольку любая конкретная группа Key3 имеет значения Key4 все NULL, установите для нее значение Key3.Результат должен быть таким:
Теперь, предположим, добавление еще 1 строки:
insert into #Example
select '1004', '100', NULL, NULL
И затем мы запускаем запрос UpdateKey3, результатстанет:
Теперь нам нужно **** запрос, который обновит Key4.Поскольку новая строка в группе Key3 = 1004, и мы уже ранее заполнили Key4 для этой группы, NULL должен стать 1002. Окончательный результат
Ака, как только мы установим Key4 для любой конкретной группировки Key3, Key4 никогда не должен изменяться,Что бы это был за **** запрос?