我认为您正在寻找having
SELECT 1 from new_table_name
having count(empName)>0
更新
您可以使用SIGN()
。结果为肯定值时返回1
,结果为0
时返回0
SELECT SIGN(COUNT(*)) FROM new_table_name
Check fiddle here
,
尝试case
语句-
select case when count(emp.name) > 0 then 1 else 0 end
from ****
where *** IN (***)
,
您可以尝试EXISTS子句
IF EXISTS (SELECT 1 emp.name
FROM ****
WHERE *** IN (***))
BEGIN
SELECT 1
END
ELSE
SELECT 0
END
由于要返回1或0,因此需要在CASE语句中定义值。
select case when exists(SELECT emp.name
FROM ****
WHERE *** IN (***)) then 1 else 0 end
,
不要使用COUNT。您不想计数行,只是想看看是否有一行。而且不要使用IF这样的逻辑,只需使用CASE。
SELECT CASE WHEN EXISTS (SELECT 1 FROM **** WHERE **** IN (****))
THEN 1
ELSE 0
END;
,
您可能要使用这样的CTE:
WITH T (C)
AS
-- Select the first record with a value in emp.name
(
SELECT TOP 1 1
FROM **** emp
WHERE *** IN (***)
AND emp.name IS NOT NULL
)
-- just count the elements of T
SELECT COUNT(1) FROM T
https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=3514827fadaf6b8d19c2658008df0a99
如果您更喜欢单行解决方案而不必对所有记录进行计数,则可以选择以下方法:
SELECT IIF(exists(select TOP 1 1 from **** emp where emp.name IS NOT NULL),1,0)
https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=be6c753a6ddb164524576061c3b8802e
,
提供的所有答案都可以正常工作。但是SQL Server已经提供了比较功能。
SELECT IIF(count(erm.employee_code) > 0,0)
FROM ****
WHERE *** IN (***)
本文链接:https://www.f2er.com/3105474.html