我正试图将值NULL更改为字符串'geen-boetes'(荷兰语中"无罚款"的意思(,但它不允许我这样做,因为我无法将字符串保存为数值类型。我想尽一切可能的方法把CAST放在那里,但我找不到解决方案。有人知道我做错了什么吗?
SELECT CAST(s.naam AS varchar)
FROM spelers s;
SELECT
s.naam,
CASE
WHEN AVG(b.bedrag) IS NOT NULL
THEN ROUND(avg(b.bedrag), 2)
ELSE CAST(AVG(b.bedrag) AS varchar) IS NULL THEN 0
END as gemiddelde
FROM
spelers s
LEFT OUTER JOIN
boetes b ON s.spelersnr = b.spelersnr
GROUP BY
s.naam
ORDER BY
s.naam
我试图使用cast命令来解决它。
在某些条件下,表达式不能返回数值,而在其他条件下,则表达式必须始终返回相同的类型。解决方案在这种情况下是铸造平均
select
s.naam,
case
when avg(b.bedrag) is not null
then cast(round(avg(b.bedrag), 2) as varchar)
else 'geen boetes'
end as gemiddelde
from
spelers s
left outer join
boetes b on s.spelersnr = b.spelersnr
group by
s.naam
order by
s.naam