返回由范围决定的不同结果

时间:2016-02-21 09:39:06

标签: sql oracle

我有一个分数表:35,47等。我如何在符号中返回分数(以10分)。 35颗3星,47颗5星。

2 个答案:

答案 0 :(得分:1)

您可以使用案例陈述:

SELECT score,case when score between 0 and 15 then '*'
                  when score between 16 and 30 then '**'
                  when score between 31 and 40 then '***'
             end as 'STARS'
FROM ScoreTable

当然,您必须调整每颗星的范围,因为您没有向我们解释逻辑。另外,我使用*作为星号,你可以添加尽可能多的WHEN,因为你想要包括所有星星。

答案 1 :(得分:1)

您可以使用the lpad() function

,而不是明确考虑范围
select lpad('*', round(your_column/10) '*') from your_table ...

这样可以将星数变为近似整数,这似乎就是你想要的。如果没有,你可以使用ceil,floor或trunc。如果舍入/截断值为零,则返回null。

例如,

select lpad('*', 3, '*') from dual;

给出

***