我正在尝试查询以在2个日期之间获取Env。
如果表中的值大于1:显示错误,否则显示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转换为数字时出错
答案 0 :(得分:1)
case
的所有分支必须返回相同的数据类型。例如,要使所有分支都返回varchar(max)
:
case count(Env)
when 1 then cast(env as varchar(max))
else 'ERROR'
end
答案 1 :(得分: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