Ваш запрос в порядке. Некоторые СУБД имеют ярлыки для преобразования результата предиката в логическое значение, но не SQL Сервер.
Вы можете слегка упростить его следующим образом:
SELECT
a.*,
CASE WHEN l.Id IS NULL THEN 0 ELSE 1 END AS IsLatest
FROM [A] a
LEFT JOIN [LatestA] l on l.Id = a.Id
Обратите внимание, что я вместо функции IIF()
использовалось выражение CASE
: я предпочитаю, потому что оно стандартное SQL. Я также считаю, что здесь проще использовать IS NULL
, чем IS NOT NULL
.
Если вы действительно хотите вернуть BIT
по какой-то причине, то:
SELECT
a.*,
CAST(CASE WHEN l.Id IS NULL THEN 0 ELSE 1 END AS BIT) AS IsLatest
FROM [A] a
LEFT JOIN [LatestA] l on l.Id = a.Id