Обновите столбец до значения BIT на основе результата нулевого запроса - PullRequest
2 голосов
/ 05 января 2012

Я пытаюсь написать запрос, который установит битовое значение, основываясь на том, является ли другой столбец пустым или нет.

Например:

UPDATE @tmpRank
SET IsXYSale = NOT dbo.Sales_XForY.ID IS NULL
FROM @tmpRank
LEFT JOIN dbo.Sales_XForY ON SaleId = @tmpRank.SaleId

Я получаю синтаксическую ошибку по ключевому слову NOT, но не вижу, как исправить запрос.

Ответы [ 3 ]

9 голосов
/ 05 января 2012
SET IsXYSale = CASE WHEN dbo.Sales_XForY.ID IS NULL THEN 0 ELSE 1 END
1 голос
/ 05 января 2012

SQL Server не имеет логического значения

UPDATE @tmpRank
SET IsXYSale = CASE WHEN dbo.Sales_XForY.ID IS NULL THEN 0 ELSE 1 END
FROM @tmpRank
LEFT JOIN dbo.Sales_XForY ON SaleId = @tmpRank.SaleId

В этом случае вы можете использовать как работает бит: любые ненулевые, ненулевые значения становятся равными 1. Это предполагает, что вы никогда не можете иметь 0 в качестве значения идентификатора, конечно ...

SET IsXYSale = ISNULL(dbo.Sales_XForY.ID, 0)
1 голос
/ 05 января 2012
UPDATE @tmpRank
SET IsXYSale = CASE WHEN dbo.Sales_XForY.ID IS NULL THEN 0 ELSE 1 END
FROM @tmpRank
LEFT JOIN dbo.Sales_XForY ON SaleId = @tmpRank.SaleId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...