select *
from employee
where controllingoffice in (
Iif(1=1, (select id from controllingoffice), (select id from controllingoffice where OwnerId=4))
)
Сообщение 512, уровень 16, состояние 1, подзапрос строки 1 вернул более 1 значения. Это не разрешено, когда подзапрос следует за =, !=, ‹, ‹= , ›, ›= или когда подзапрос используется как выражение.
Примечание. Оба подзапроса возвращают более 1 строки.
1=1
просто представляет собой переключатель, поэтому я предполагаю, что намерениеeither return all employees of all controllingoffices OR (if other switch state) return only of a selected office (in this case 4)
- ваш пример вернет только всех сотрудников офиса 4 ... или я что-то здесь упустил?or
не равноxor
, верно? 20.10.2020not X
избыточна (пока задействованы нули). Строки дляOwnerId = 4
всегда возвращаются Иногда они просто единственные строки, как когда переключатель выключен. 20.10.2020@input = 1
или оно просто будет вставлено как динамический sql. 20.10.2020