Мне нужно обновить значения NULL
с новым значением из последнего известного значения на основе ID
& DATE
столбцов. Обратите внимание, что обновление ненулевого значения должно меняться при изменении столбца ID
.атрибут, связанный с атрибутом в другой таблице в SQL Server
В приведенном ниже примере запрос, Null
заменяются 5 в L2 & 01-12-2016 строку, но оно должно быть нулевым, как ID
изменяется на L2 и 5, в результате чего из L1 строки. Но мне нужно получить R_ID
, когда ID
меняется.
В моей таблице 90 миллионов строк, и процесс обновления должен быть как можно быстрее.
CREATE TABLE #temp
(
ID nvarchar(10),
DATE date,
R_ID INT
);
INSERT INTO #temp
SELECT 'L1', '2016-12-01', NULL
UNION ALL
SELECT 'L1', '2016-12-02', 5
UNION ALL
SELECT 'L1', '2016-12-03', NULL
UNION ALL
SELECT 'L2', '2016-12-01', NULL
UNION ALL
SELECT 'L2', '2016-12-02', 8
UNION ALL
SELECT 'L2', '2016-12-03', NULL
UNION ALL
SELECT 'L3', '2016-12-03', 3
UNION ALL
SELECT 'L3', '2016-12-04', NULL
UNION ALL
SELECT 'L3', '2016-12-04', NULL ;
DECLARE @R_ID INT;
UPDATE #temp WITH(TABLOCKX)
SET @R_ID = R_ID = CASE WHEN R_ID IS NULL THEN @R_ID ELSE R_ID END
OPTION(MAXDOP 1);
Логика работает, но запрос занимает больше часа, чтобы обновить записи на 90 м. – Rajini
Ну, если 90 м относится к 90 000 000 записей, то это не так долго для обновления с подзапросом ... –