2013-03-13 3 views
2

У меня есть таблица со следующими полями: ID_Observation (PK), ID_Grading, ID_ObKind, Data.Запрос на обновление SQL Server 2005 по той же таблице

У меня возникли трудности с написанием запроса для обновления ряда строк на основе других строк в таблице.

Если ID_ObKind = 9 И Data = «Нет», то любая строка, которая имеет ту же ID_Grading с ID_ObKind = 10 и Data = NULL не должен быть обновлен к данным = 0.

У меня есть около дюжины различных случаев где данные должны быть изменены в зависимости от значения данных для конкретного ID_ObKind, поэтому необходимо прибить это. Каждый ID_Grading может иметь до 120 строк, каждый с другим ID_ObKind.

ответ

1

Я думаю, что это сработает для вас. http://sqlfiddle.com/#!3/2eeaf/14

Update TheTable 
    set data=0 
where id_grading = (select id_grading 
         from TheTable 
         where id_obkind=9 
         and data='No') 
    and id_obkind=10 
    and data is null 
+0

Могу ли я задать вопрос об этой таблице, поскольку она не кажется эффективной для меня. Одна строка добавляется для каждого наблюдения с любым типом данных, поступающих в столбец данных, будь то текст, целые числа или поплавки. На веб-странице есть валидация, чтобы предотвратить неправильный тип по виду наблюдения. Pivot должен использоваться для вывода всех строк в столбцы. Не было бы проще настроить столбцы с базой данных, контролирующей правильный тип данных для каждого столбца, а не оставить его на стороне клиента? Нет необходимости в сворачивании и опросе, было бы проще? Я только что унаследовал эту базу данных и попытался ее понять. – user2165345

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