У меня есть немного столбец.Я хочу обновить все записи до 1
, если в этом столбце присутствует 1
.
Когда запрос выполняется, а в столбце нет 1
, он возвращает 0
, как я и ожидал.Если это все 1
, то возвращается 1
, как я и ожидал.Однако, если в столбце есть 1
и 0
, отличные возвращают 0
и 1
.Я понимаю, почему, поскольку оба эти значения различны.
Я хочу иметь возможность выбрать только 1, где присутствует 1.
UPDATE u
SET ChannelType = (SELECT DISTINCT ChannelType FROM Staging.UriData WHERE SerialNumber = s.SerialNumber AND ChannelType IS NOT NULL),
Calculated = (SELECT DISTINCT CAST(CASE WHEN Calculated = 1
THEN 1
ELSE 0
END AS BIT
)FROM Staging.UriData WHERE SerialNumber = s.Serialnumber AND Calculated IS NOT NULL)
FROM [Staging].[UriData] u
INNER JOIN #Serial15 s ON u.SerialNumber = s.SerialNumber
WHERE u.ChannelName IN (SELECT ChannelName FROM [Staging].[ActiveChannels])
AND u.SerialNumber = s.SerialNumber
Ожидаемый результат заключается в том, что если 1
присутствует в столбце, я хочу, чтобы CASE
часть запроса возвращала 1
, а не оба разных значения.
Я не могу предоставить набор данных в Fiddle, поскольку он является частью большегозапрос, содержащий конфиденциальную информацию, поэтому заранее извиняюсь.
TIA