我正在尝试查询以获得两个日期之间的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转换为数字时出错
case
的所有分支必须返回相同的数据类型。例如,让所有分支返回varchar(max)
:
case count(Env)
when 1 then cast(env as varchar(max))
else 'ERROR'
end
希望以下脚本提示可以帮助您解决问题。如果我从表'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