根据排序定义表排序数据

排序|数据

/*--原帖地址:http://community.csdn.net/Expert/topic/3866/3866872.xml?temp=.2154199--*/

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

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

/*--处理要求:

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         1112           aa         1116           cc         3337           cc         3333           aa         1118           cc         3339           cc         3334           bb         2225           bb         222--*/

--排序函数create function f_sort(@id int,@col1 varchar(10))returns varchar(20)asbegin 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 col1=@col1 return(right(10000000000+isnull(@j,0)/@size,10)+right(10000000000+@i,10))endgo

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

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

时间: 2024-10-02 04:17:01

根据排序定义表排序数据的相关文章

excel2016如何数据透视表排序和筛选

  1.左键点击一次数据透视表最后一个列标题右边相邻的单元格,再点击菜单栏上的"数据","自动筛选", 2.之后再点击数据透视表中需要赛选的数据,下拉,在下拉内容中选择筛选的条件 excel2016在数据透视表中自定义顺序排序 1.选中任意一个可排序的单元格(注意不要选择透视表) 2.点击开始选项卡下排序和筛选→自定义排序. 3.选择次序中的自定义序列 4.以英文逗号隔开输入自定义序列,点击添加→确定. 5.关闭排序窗口 6.点击透视表中要自定义排序列的向下箭头 7

如何对Excel工作表中数据随机排序?

  1.启动Excel并打开工作表,在数据区域外的H2单元格中输入公式"=RAND()",按Enter键获得计算结果.拖动填充柄 将公式填充到该列的其他单元格中,如图1所示. 图1 创建公式并填充到其他单元格中 2.在"开始"选项卡的"编辑"组中单击"排序和筛选"按钮,在打开的菜单中选择"降序"命令,如图2所示.在"排序提醒"对话框中选择"扩展选定区域"单选按钮,单击

c++-C++中对类的一个数据成员排序,为什么排序不了

问题描述 C++中对类的一个数据成员排序,为什么排序不了 #include #include #include #include class List; class person { public: friend class List; private: person() {next=0;} person *next; char name[10],sex[5],tel[15],ads[20],code[10],mail[20],QQ[15],category[15]; }; class List

link环境下,在用codefirst制作的软件中,如何对输出的excel表排序?

问题描述 link环境下,在用codefirst制作的软件中,如何对输出的excel表排序? link环境下,在用codefirst制作的软件中,如何对输出的excel表排序? 解决方案 http://stackoverflow.com/questions/13134490/apache-poi-sorting-rows-in-excel

JavaScript实现十种经典排序算法(js排序算法)

 冒泡排序算法 冒泡排序(Bubble Sort)是一种简单直观的排序算法.冒泡排序算法的步骤描述如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.这步做完后,最后的元素会是最大的数. 针对所有的元素重复以上的步骤,除了最后一个. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较. JavaScript实现冒泡排序算法的代码如下: function bubbleSort(arr) {     var l

使用 Excel 数据透视表查看数据

  Excel 2003 工作表是组织和分析财务数据的理想工具.例如,您可能会创建一个包含差旅住宿费的工作表.如果需要各个季度的分类汇总,您知道如何相应地修改工作表. 但是,在需要按季度查看费用类别总计时会发生什么情况呢?而且如果您每次只想查看某一类或某一年份又该怎么办呢?在 Excel 工作表中能实现这些吗?当然可以.有没有更容易的方法?肯定有. ·一种更容易的方法 Microsoft PivotTable 报表就是答案.不必写入复杂的公式,您可以使用向导创建一个交互式表格来自动提取.组织和汇

listview-将两张表的数据展示在一个ListView中

问题描述 将两张表的数据展示在一个ListView中 数据库中的数据如图所示,一共有5张表,三个数据表以及两个关系表.我现在需要将所有的project和exam读取出来然后将其中的name和description显示在同一个ListView中,根据数据表中的session sort no来排序. 现在的问题: 1.如何同时读取所有的exam和project数据并根据session sort no来排序呢?因为数据比较多,所以应该不会一次性完成读取,而是用类似SimpleCursorAdapter

Java对象排序、中文排序、SortedSet排序使用和源码讲解

在C.C++中有很多排序算法,但是通常排序算法不得不让程序员在写代码的过程中陷入对底层很多指针和位置的理解,java不希望这样,所以排序大多可以由java帮你做掉,例如,你要对一个数组排序,就通过:Collections.sort(list)那么这个list就被排序了,排序最终调用的是Arrays.sort方法来完成的,所以数组自然是用Arrays.sort了,而SortedSet里面内部也有排序功能也是类似的方式的来实现的,只是内部调用了相关的方法来完成而已:SortedSet只是一个接口,实

EF如何操作内存中的数据以及加载相关联表的数据:延迟加载、贪婪加载、显示加载

原文:EF如何操作内存中的数据以及加载相关联表的数据:延迟加载.贪婪加载.显示加载 之前的EF Code First系列讲了那么多如何配置实体和数据库表的关系,显然配置只是辅助,使用EF操作数据库才是每天开发中都需要用的,这个系列讲讲如何使用EF操作数据库.老版本的EF主要是通过ObjectContext来操作数据库的,一看是Object打头的,自然相当庞大,方法也比较多.到了经典的4.1版本,EF小组推出了一些更简单好用的API,就是DbContext,它包括更常用的方法.看看EF小组是怎么说