我正在尝试从具有数字和分类的 varchar 列创建年龄范围。该列包含年龄值 0-12、13、11、23、30、25、32、31、34、35、42、43、39、47、50、55、61,62、64 岁以上、收藏夹。
我试过这个
CASE
WHEN Age='0-12' THEN '0-12'
when Age BETWEEN 15 AND 30 THEN '15-30'
when Age BETWEEN 31 AND 63 THEN '31-63'
when Age= 'over 64' then 'over 64'
when Age='favorites'then 'favorites'
END AS 'Age group',
或以下
CASE
when Age BETWEEN 15 AND 30 THEN '15-30'
when Age BETWEEN 31 AND 63 THEN '31-63'
when Age= 'over 64' then 'over 64'
else Age
END AS 'Age group'
我期待着
0-12
15-30
31-63
over 64
favorites
我不断收到以下错误
将 nvarchar 值“0-12”转换为数据类型 int 时转换失败。
我做错了什么,正确的写法是什么?
您有无法转换为数字的字符串数据.. 假设您需要原始数据,请尝试这个
create table #tmp_agelookup (
age_string varchar(20),
age_number int
)
insert into #tmp_agelookup(age_string)
select distinct age from (yourtable)
update #tmp_agelookup set age_number =
case when age_string = '0-12' then 12
when agestring = 'over 64' then 64 else age_string end
现在您可以加入此表并在age_number 列上使用case 语句。 希望这有帮助。