2015-02-19 5 views
-2

У меня есть один столбец в моей базе данных sql с именем S-No. Который имеет значения, как следующее:значения столбца обновления, которые являются нулевыми

S-No 
____ 
1 
____ 
2 
____ 
Null 
____ 
Null 
____ 
3 
____ 
Null 
____ 
Null 
____ 
Null 
____ 
Null 
____ 
Null 
____ 
4 
____ 
Null 
. 
. 

Теперь, я хочу написать запрос таким образом, что, что S-Нет столбец не содержит Null от 1 до 2, обновлять там значение 1 ..... А который имеет Null между 2 до 3, обновить там значение до 2 ... И так далее ... например. 3 до 4 - обновить как 3, 4 до 5 --- обновить как 4, 5 до 6 ...... Надеюсь, вы предложите мне запрос .. я не умею писать .. Frown | :(я надеюсь, что вы ПЕРЦЫ поможете

+1

Есть ли идентификатор или столбец что-то, что сохранит указанный вами порядок? –

+2

«Нуль от 2 до 3» в зависимости от каких критериев? По умолчанию нет порядка, и факт, что вы получаете записи в указанном порядке, является просто совпадением. –

+1

Это не имеет смысла реляционно - вы не можете сделать это в чистом SQL. Вы можете сделать это программно. – justAnotherUser

ответ

0

с B А.С. ( SELECT, ID, (SELECT макс (с2) ОТ table2 WHERE ID < A.ID и table2.s2 IS NOT NULL) ValueToAssign ОТ таблица2 A где S2 IS NULL )

ОБНОВЛЕНИЕ таблица2 SET s2 = B.ValueToAssign ОТ таблица2 JOIN B = О table2.ID B.ID

+0

Большое вам спасибо .... имена столбцов не похожи на то, что я использую .... Он работает для меня ..... Приветствия ........ – user4584148

0

Предполагая, что есть идентификатор или другой столбец, который будет сохранять порядок, так что вы знаете, что номера в null сек попадающего между, вы могли бы сделать что-то вроде:.

UPDATE t 
SET [S-no] = 
(
    SELECT MAX(S_no) FROM table WHERE ID < t.ID 
) 
WHERE S_no IS null 

Очевидно, либо сохранить резервную копию или тест в среде QA - никаких гарантий не выраженных или подразумеваемых ...

Смежные вопросы