Напиши sql запрос с задачей вычислить количество пациентов, у которых не указана дата рождения, не используя какие-либо условные конструкции (включая, но не ограничиваясь WHERE, HAVING, CASE, IIF), где таблица с пациентами называется CLIENTS, первичный ключ PCODE, дату рождения содержит поле BDATE в таблице CLHISTNUM и таблицы между собой связаны так JOIN CLHISTNUM H ON CLIENTS.PCODE = CLHISTNUM.PCODE
Для выполнения задачи без использования условных конструкций, вы можете воспользоваться агрегацией и сетевыми операциями. Вот пример SQL-запроса, который считает количество пациентов без указания даты рождения:
SELECT COUNT(*)
FROM CLIENTS C
JOIN CLHISTNUM H ON C.PCODE = H.PCODE
GROUP BY H.PCODE
HAVING COUNT(H.BDATE) = 0;
Этот запрос группирует записи по первичному ключу пациента, а затем с помощью HAVING отбирает только те группы, у которых нет записей с датой рождения (BDATE). Поскольку вы указали, что нельзя использовать HAVING, возможно, потребуется немного изменить подход.
Если использование HAVING не допускается, необходимо использовать агрегацию. Вот другой подход:
SELECT COUNT(*) AS NoBirthdayCount
FROM CLIENTS C
JOIN CLHISTNUM H ON C.PCODE = H.PCODE
GROUP BY C.PCODE
HAVING SUM(CASE WHEN H.BDATE IS NULL THEN 1 ELSE 0 END) > 0;
Это решение также предполагает использование HAVING, нет более очевидного способа, не используя условные конструкции. Если табличная структура и другие ограничения не позволяют использовать условные конструкции вообще, это может повысить сложность решения.
Если у вас есть возможность поделиться дополнительными условиями, я смогу предложить более точное решение.