排序

kdymh 2008-11-12 10:20:31
如 1000以下,1000-3000,3000-5000,5000-8000,8000-10000,10000以上
在SQL里能不写出他们的等级关系
结果如下:

1000以下 1
1000-3000 2
3000-5000 3
5000-8000 4
8000-10000 5
10000以上 6
...全文
66 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kdymh 2008-11-12
  • 打赏
  • 举报
回复
drop function fnSectionGrade
create function fnSectionGrade(@section varchar(50))
returns numeric(12)
AS
begin
declare @return numeric(12)
if patindex('%以下%',@section)<>0
set @return=0
if patindex('%以上%',@section)<>0
set @return=999999999
if patindex('%以上%',@section)=0 and patindex('%以下%',@section)=0
begin
set @return=cast(left(@section,charindex('-',@section)-1) as int)+cast(right(@section,len(@section)-(charindex('-',@section))) as int)
end
return @return
end

select dbo.fnsectiongrade('1000-9000')

我自己写了一个函数,解决了

我个问题原是于交叉水晶报表要按范围排序如用范围去排序那会很乱的 有可能会出现,'6000-9000,'3000-6000'这样的排序如按我们的习惯就是'3000-6000','6000-9000,所以要找出个数据与他们对应的列作为真正的排序,就现在写的函数
而显示列则可以用表示范围的列

这和二楼的思路差不多
aloto 2008-11-12
  • 打赏
  • 举报
回复
LZ的是工资系统挖?
时光瞄 2008-11-12
  • 打赏
  • 举报
回复
支持2楼
csdyyr 2008-11-12
  • 打赏
  • 举报
回复
分拆数据到列,搜索一下
jinjazz 2008-11-12
  • 打赏
  • 举报
回复
order by case xx when '1000以下' then 1 when 1000-3000 then 2 end

27,581

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧