2015-02-18 4 views
0

Я хочу, чтобы обновить таблицу столбца, где значение, взятые из другого столбца из тех же таблиц, при условии, что CompletionDate='1900-01-01 00:00:00.000'Условного обновление таблицы SQL Server 2008

Как я могу это сделать?

update Details 
set CompletionDate = (select FixedDate from TblRequirementDetails) 
where CompletionDate = '1900-01-01 00:00:00.000' 
and StatusID = '10' 
GO 

выдает ошибку

подзапросов возвращается более чем на 1 значение. Это недопустимо, когда подзапрос следует =,! =, <, < =,>,> = или когда подзапрос используется как выражение.

+0

Так в чем проблема? –

+0

ошибка 'Subquery возвращает более 1 значения. Это недопустимо, когда подзапрос следует за =,! =, <, <= , >,> = или когда подзапрос используется как выражение. ' – waghso

+0

Ваш подзапрос возвращает несколько строк, поэтому вам нужно отфильтровать значения из подзапроса. Использование условий или TOP для получения одного значения в зависимости от ваших требований. –

ответ

1

Очень неясно, как вы хотите выбрать фиксированную дату для установки так. По вашим комментариям ясно, что вы хотите установить CompletionDate в FixedDate той же таблицы, когда StausID=10 для fixedDate, и я предполагаю, что он даст вам строку uniq.

 UPDATE Details 
     SET CompletionDate = FixedDate 
     WHERE 
      CompletionDate='1900-01-01 00:00:00.000' 
      AND StausID= '10' 

Я включаю, чтобы убедиться, что подзапрос возвращает только одну строку. Bu это очень склонный к ошибкам подход, и вам нужно убедиться, что строка Top 1 - это то, что вы хотите использовать.


UPDATE
Как Фроммы комментарий я понял, как вы просто хотите обновить те же строки Complettiondate с этим строками FixedDate значения, чтобы обновленное запрос.

+0

TOP 1 не является подход. Он должен быть таким же значением строки столбца «FixedDate», где установлен CompletionDate. – waghso

+0

Проверьте обновление. –

+0

работает отлично. благодаря – waghso

0

Ваш дополнительный запрос возвращает много результатов. Ваш дополнительный запрос должен давать только 1 результат. См. Запрос ниже

UPDATE Details 
SET CompletionDate = (
SELECT 
     FixedDate 
FROM TblRequirementDetails <WHERE CLAUSE HERE THAT ENABLES YOUR QUERY TO RETURN ONLY ONE VALUE> 
) 
WHERE CompletionDate='1900-01-01 00:00:00.000' 
AND StatusID='10 
Смежные вопросы