SQL:返回基于字段描述用户类别的字符串

时间:2010-08-27 11:40:08

标签: sql

我们的想法是在结果中输入一个描述用户“类别”的新列。例如,该类别可以是基于用户年龄的“不足18”,“正常”,“超过65”。

也就是说,对于我表中的每个用户,我希望在名为“category”的列中获取其ID和此描述。

你会怎么做?我需要这个,因为数据稍后将转到JSON对象和ExtJS网格以进行可视化。

3 个答案:

答案 0 :(得分:4)

由于您的类别是从现有数据派生的数据,因此不鼓励在数据库中使用新列。相反,您可以只将case语句添加到数据库查询中,以根据需要计算类别,或将其放入数据库中的视图中。

查询看起来像这样:

select
    ...
    case when Age < 18 then 'under18'
         when Age > 65 then 'over65'
         else 'normal' end AS Age_Category
from ...

答案 1 :(得分:0)

在查询级别,这可以使用CASE表达式完成:

select
  user_id,
  case when age < 18 then 'under18'
       when age <=65 then 'normal'
       when age > 65 then 'over65'
       else null end as category
from
  Users

但是我建议将其从查询级别移动到应用程序级别。您已经拥有了从数据集构造JSON的应用程序逻辑,这将是从年龄值生成类别名称的更合适的位置。

答案 2 :(得分:0)

如果你的DBMS支持它,我会创建一个UDF(用户定义函数),它从表中传入age并返回类别。这具有可重复使用和更清洁的优点。如果这是针对一个查询,则只使用CASE语句。