当数字结果为 SQL 时向大小写添加文本

Adding text to case when numeric result in SQL

我有一个以小数计算的年龄变量,我想将它向下舍入并在结果中添加文本 'years'。期望的输出将是:

age         age_year
--------------------
0.0012      < 1 year
1.567        1 year 
6.230        6 year 
0.983       < 1 year 

目前,我有:

select 
case when (age < 1) then '< 1 year'
     when (age > 1) then floor(age) + 'years' 
     end as age_year 

我收到以下错误:

ERROR [HY000] ERROR:  Bad numeric input format 'years'

我可以看出单元格类型存在冲突,看起来 age_year 仍被视为数字。我认为解决方案是将单元格类型转换为字符串,但想不出将其放在哪里/如何放。如有任何建议,我们将不胜感激!

Netezza 中的字符串连接使用 ||:

(case when age < 1 then '< 1 year'
      else floor(age) || ' years' 
 end) as age_year 

我删除了第二个条件,因为 else 可能会做你想要的(除非 age 可以为负数)。