SQL2005排序函数疑问

p094611256 2010-08-24 09:19:30
有一个表结构为:
F A B C D E F
BM 1.2 2.3 1.3 2.1 4.3 5.6
输出结果为:
BM 1.2,2.3,1.3,2.1,4.3,5.6
SORT 6 3 5 4 2 1
...全文
125 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
alfred_2006 2010-08-24
  • 打赏
  • 举报
回复
ordeby应该就可以
smh05128 2010-08-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 smh05128 的回复:]

SQL code

create table #t(F varchar(2), A float, B float, C float ,D float, E float, F float)

insert INTO #t
select'BM','1.2','2.3','1.3','2.1','4.3','5.6'


select *from #t
union all
selec……
[/Quote]

有个地方写错了,后面没有那个G,我多写了
playwarcraft 2010-08-24
  • 打赏
  • 举报
回复
--......


create table #t(BM varchar(4), A numeric(18,2), B numeric(18,2), C numeric(18,2) ,
D numeric(18,2), E numeric(18,2), F numeric(18,2))

insert INTO #t
select'BM',1.2,2.3,1.3,2.1,4.3,5.6
GO
create function dbo.fn_sort(
@a numeric(18,2),
@b numeric(18,2),
@c numeric(18,2),
@d numeric(18,2),
@e numeric(18,2),
@f numeric(18,2),
@flag int)
Returns int
AS
begin
declare @re int
select @re=XX.tmp
from
(
select X.flag,X.col,tmp=row_number() over(order by X.Col desc)
from
(
select 1 as flag, @a as Col
union all
select 2 as flag,@b as Col
union all
select 3 as flag,@c as Col
union all
select 4 as flag,@d as Col
union all
select 5 as flag,@e as Col
union all
select 6 as flag,@f as Col
) X
) XX
where XX.flag=@flag

return @re

end
GO

select 'Sort' as BM,
dbo.fn_sort(A,B,C,D,E,F,1) as A,
dbo.fn_sort(A,B,C,D,E,F,2) as B,
dbo.fn_sort(A,B,C,D,E,F,3) as C,
dbo.fn_sort(A,B,C,D,E,F,4) as D,
dbo.fn_sort(A,B,C,D,E,F,5) as E,
dbo.fn_sort(A,B,C,D,E,F,6) as F
from #t
/*
Sort 6 3 5 4 2 1
*/
GO
drop table #t
drop function dbo.fn_sort




smh05128 2010-08-24
  • 打赏
  • 举报
回复

create table #t(F varchar(2), A float, B float, C float ,D float, E float, F float)

insert INTO #t
select'BM','1.2','2.3','1.3','2.1','4.3','5.6'


select *from #t
union all
select 'SORT',* from (select rn=row_number() over (order by val desc),col from #t)
unpivot(val for col in (A,B,C,D,E,F))b
)t
pivot(max(rn) for col in(A,B,C,D,E,F,G))c
--输出结果
F A B C D E F
BM 1.2,2.3,1.3,2.1,4.3,5.6
SORT 6 3 5 4 2 1
duanzhi1984 2010-08-24
  • 打赏
  • 举报
回复
对楼主无语。。。
水族杰纶 2010-08-24
  • 打赏
  • 举报
回复
如果只有一条记录
可以逐列判断
如果多条记录 大小值不在一列怎么处理?
p094611256 2010-08-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wufeng4552 的回复:]

引用 7 楼 p094611256 的回复:
引用 6 楼 chuifengde 的回复:

给出表结构,表数据,要的结果,你描述的看不懂


表结构为:
F A B C D E F
其中字段F的类型为字符型,其他 字段类型都是数值型
有一行数据如下:
BM 1.2 2.3 1.3 2.1 4.3 5.6
经过排序后,输出结果为:
BM 1.2,2.3,1.3,2.1,4……
[/Quote]

就是对一行数据进行排序,将他们的排序结果输出来就行,最大的为1,依次排下去
水族杰纶 2010-08-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 p094611256 的回复:]
引用 6 楼 chuifengde 的回复:

给出表结构,表数据,要的结果,你描述的看不懂


表结构为:
F A B C D E F
其中字段F的类型为字符型,其他 字段类型都是数值型
有一行数据如下:
BM 1.2 2.3 1.3 2.1 4.3 5.6
经过排序后,输出结果为:
BM 1.2,2.3,1.3,2.1,4.3,5.6
SORT 6 3 5 4 2 1 ……
[/Quote]
还是没懂
p094611256 2010-08-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 chuifengde 的回复:]

给出表结构,表数据,要的结果,你描述的看不懂
[/Quote]

表结构为:
F A B C D E F
其中字段F的类型为字符型,其他 字段类型都是数值型
有一行数据如下:
BM 1.2 2.3 1.3 2.1 4.3 5.6
经过排序后,输出结果为:
BM 1.2,2.3,1.3,2.1,4.3,5.6
SORT 6 3 5 4 2 1
chuifengde 2010-08-24
  • 打赏
  • 举报
回复
给出表结构,表数据,要的结果,你描述的看不懂
p094611256 2010-08-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 duanzhi1984 的回复:]

SQL code


create table #t(BM varchar(2), A varchar(3), B varchar(3), C varchar(3) ,D varchar(3), E varchar(3), F varchar(3))

insert INTO #t
select'BM','1.2','2.3','1.3','2.1','4.3','5.6'


sel……
[/Quote]

是要排序,这样子谁不会???
p094611256 2010-08-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 duanzhi1984 的回复:]

SORT 6 3 5 4 2 1 是怎么来的。。
[/Quote]


这个是排序过来的,就是上面的数字的顺序
duanzhi1984 2010-08-24
  • 打赏
  • 举报
回复


create table #t(BM varchar(2), A varchar(3), B varchar(3), C varchar(3) ,D varchar(3), E varchar(3), F varchar(3))

insert INTO #t
select'BM','1.2','2.3','1.3','2.1','4.3','5.6'


select *from #t
union all
select 'STORT','6','3','5','4','2','1'
duanzhi1984 2010-08-24
  • 打赏
  • 举报
回复
SORT 6 3 5 4 2 1 是怎么来的。。
蓝色风影 2010-08-24
  • 打赏
  • 举报
回复
什么排序函数阿? 用ORDER BY 排序不行吗?

27,579

社区成员

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

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