根据排序定义表排序数据

原创 2005年03月21日 19:08:00

根据排序定义表排序数据

测试数据:
create table tb1(id int,col1 varchar(10),col2 int)
insert tb1 select 1,'aa',111
union  all select 2,'aa',111
union  all select 3,'aa',111
union  all select 4,'bb',222
union  all select 5,'bb',222
union  all select 6,'cc',333
union  all select 7,'cc',333
union  all select 8,'cc',333
union  all select 9,'cc',333

create table tb2(col1 varchar(10),size int)
insert tb2 select 'aa',2
union  all select 'cc',2
union  all select 'bb',0
go

问题描述:
    tb1 与 tb2 通过 col2 关联,tb2的col1包含所有tb1.col1。要求写函数实现:
    tb1中的col1按照tb2中的col1定义的记录数,进行排列。
例如:
在tb2中:
aa 的size=2,就先排2条aa记录
cc 的size=2, 并且在aa后面,所以接着排2条cc的记录
而bb 在tb2中定义是0条,则不参与排序,始终显示在最后
重复循环,不够的由后面的记录补上最终实现如下排序结果:
id          col1       col2       
----------- ---------- -----------
1           aa         111
2           aa         111
6           cc         333
7           cc         333
3           aa         111
8           cc         333
9           cc         333
4           bb         222
5           bb         222
--*/

--排序函数
create function f_sort(@id int,@col1 varchar(10))
returns varchar(20)
as
begin
    declare @i int,@size int,@j int
    set @i=0
    select @i=case when @size is null then @i+1 else @i end
        ,@size=case when @col1=col1 then size else @size end
    from tb2
    if @size=0 return(replicate(20,'9'))
    select @j=count(*)
    from tb1
    where id<@id
        and return(right(10000000000+isnull(@j,0)/@size,10)+right(10000000000+@i,10))
end
go

--调用实现查询
select * from tb1 a
order by dbo.f_sort(id,col1)
go

--删除测试
drop table tb1,tb2
drop function f_sort

原帖地址

大数据排序方案---外排序介绍

原文:http://blog.sina.com.cn/s/blog_62186b4601019uz1.html 我们一般提到排序都是指内排序,比如快排,堆排序,归并排序等,所谓内排序就是能把所有...
  • h330531987
  • h330531987
  • 2017年04月25日 01:19
  • 538

对ArrayList集合里面数据排序

以后遇到给集合里的元素排序就可以这么办了!!
  • air4312916
  • air4312916
  • 2016年11月26日 10:35
  • 2277

顺序表上实现快速排序

快速排序 (1)定义顺序表的存储结构; (2)在顺序表上实现快速排序; (3)用大量的数据测试最好、最坏和平均情况下的排序速度。 #include #include #include using...
  • migu77777
  • migu77777
  • 2016年12月17日 21:40
  • 810

python数据结构——排序算法——八大排序算法的Python实现

1、插入排序 描述 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算...
  • u010454729
  • u010454729
  • 2015年10月27日 21:25
  • 597

table自定义排序

实际上表格的排序就是把要排序的那列(或行),的值存在一个数组中,然后对数组用比较函数进行排序,然后再对表格内容进行替换. 思想:考虑代码的简单易用及可重复; 现在举例说明,以列排序为例; 1)表...
  • woshishui6501
  • woshishui6501
  • 2014年05月20日 09:50
  • 1483

SQL数据排序与分组

SQL
  • GoslingBoy
  • GoslingBoy
  • 2014年03月12日 23:27
  • 3898

九大基础排序总结与对比

详细分析 冒泡、选择、插入、堆排序、归并、快速、希尔、桶排序、基数排序,并做了对比和改进分析。...
  • Amazing7
  • Amazing7
  • 2016年06月07日 15:43
  • 21791

拓扑排序_基于邻接表

//拓扑排序_基于邻接表 //大纲:删除无前继结点的顶点 // //输入: // 先确定顶点数和边数 // 分为头结点和值结点,头结点含有count,用于计数这个结点当前含有的前继 // //...
  • h1023417614
  • h1023417614
  • 2014年02月23日 18:08
  • 2467

尝试用顺序表实现排序算法(持续更新..)

数据结构刚刚学到顺序表,于是顺便试下复习下C语言,自学下后面必会的各种排序算法并自己实现下。(排序算法毕竟比较基础也是很多时候面试会面到的)算是随笔吧,最近又挺忙的,搞项目的事 排序...
  • erichhhhho
  • erichhhhho
  • 2016年04月05日 16:56
  • 1800

10亿条记录排序

10亿个字符串的排序问题 博客分类:  数据结构 10亿个字符串排序  一、问题描述 有一个大文件,里面有十亿个字符串,乱序的,要求将这些字符串以字典的顺序排好序 ...
  • woshifeixingzhuiyue
  • woshifeixingzhuiyue
  • 2014年12月15日 18:14
  • 2394
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:根据排序定义表排序数据
举报原因:
原因补充:

(最多只允许输入30个字)