如何使用Count with Case何时?

问题描述 投票:1回答:2

我正在尝试查询以获得两个日期之间的Env。

如果表中有多个值:显示错误'否则显示Env的值。

我不确定我的查询是否正确。

SELECT ENV,
Case count(Env)
when 1 then Env
else 'ERROR'

From EnvTable
Inner JOIN USER ON USR_ID=Env_Usr_ID
where Usr_login='ELLA' and Env_Date between 201601 and 201612
Group by Env

我期待Env,但实际结果是消息错误:将数据类型varchar转换为数字时出错

sql-server count case case-when
2个回答
1
投票

case的所有分支必须返回相同的数据类型。例如,让所有分支返回varchar(max)

case count(Env)
when 1 then cast(env as varchar(max))
else 'ERROR'
end

0
投票

希望以下脚本提示可以帮助您解决问题。如果我从表'EnvTable'和'User'获得实际数据样本,我就可以提供实际的脚本。

SELECT 
E.ENV,
CASE COUNT(E.Env)
    WHEN 1 THEN CAST(E.Env AS VARCHAR(50))
    ELSE 'ERROR'
END AS ENV_COUNT
FROM EnvTable E
INNER JOIN [USER] U 
    ON U.USR_ID=E.Env_Usr_ID
WHERE U.Usr_login='ELLA' 
AND E.Env_Date BETWEEN '201601' AND '201612'
GROUP BY E.Env
© www.soinside.com 2019 - 2024. All rights reserved.