使用sql中的case语句将varchar列中的项目分组为年龄范围

问题描述 投票:0回答:1

我正在尝试从具有数字和分类的 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 时转换失败。

我做错了什么,正确的写法是什么?

sql sql-server case
1个回答
0
投票

您有无法转换为数字的字符串数据.. 假设您需要原始数据,请尝试这个

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 语句。 希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.