根据排序定义表排序数据
测试数据:
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
原帖地址
分享到:
相关推荐
实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...
本话题聚焦于“易语言自定义数据类型数组排序”,将深入探讨如何在易语言中创建、操作自定义数据类型数组,并实现各种排序算法,如根据产地、类别和售价等属性进行排序。 自定义数据类型在易语言中允许我们定义包含...
数据窗口排序功能允许用户根据特定字段对数据显示进行升序或降序排列,提供了灵活的数据组织方式,极大地提高了数据处理的效率和用户体验。 在PB中,数据窗口的排序主要有以下几种方式: 1. **内置排序**:这是最...
### 数据结构:直接插入排序算法解析 #### 一、引言 在计算机科学领域,排序是一种常见的操作,用于将一组无序的数据按照特定的顺序排列。插入排序是一种简单直观的排序算法,它的工作原理类似于人们手工排序扑克...
在实际编程中,为了提高效率和代码的可读性,我们通常会定义结构体来表示链表节点,并编写函数来实现添加、删除和排序等功能。这些函数可以接受链表头指针作为参数,返回操作后的链表头指针,使得链表操作更加模块化...
1. 冒泡法排序算法:冒泡法是一种简单的排序算法,它通过反复比较和交换相邻元素来排序数据。在本实验报告中,冒泡法用于对一组数300,250,280,240,260 进行排序。 2. 数据段和代码段的定义:在汇编语言中,数据...
然后根据选择的排序方式(升序或降序)对数据进行排序。例如: ```javascript function sortTable(event) { const clickedColumn = event.target.id; const table = document.getElementById('sortableTable'); ...
4. **排序数据**:根据字段名和排序顺序(升序或降序)对数据数组进行排序。可以使用JavaScript内置的`Array.prototype.sort`方法,提供一个比较函数来定义排序规则。 5. **重新渲染表格**:根据排序后的数据数组...
1. **排序定义**:排序是指将一组数据按照规定的顺序进行排列的过程。排序的目的主要是为了方便后续的数据查询和处理。 2. **排序分类**: - **内部排序**:指在整个排序过程中,所有的数据都在内存中完成排序的...
输入的测试数据由随机数生成器提供,程序根据用户的选择执行相应的排序算法,并输出排序后的结果。用户可以选择是否继续执行排序操作。 总之,这份报告详述了如何使用数据结构和算法解决多关键字排序问题,包括稳定...
这可能涉及到条件语句或枚举类型的使用,以根据用户的选择调用相应的排序函数。 **五、性能分析** 为了优化和比较不同排序算法的效率,程序可能还包含了性能分析功能,如计时器来测量每种排序方法所需的时间,或者...
根据题目要求,我们需要实现一个能够对数组进行直接插入排序的函数,并且在排序过程中输出每一步的结果。下面是具体的实现代码: ```c #include // 实现直接插入排序的函数 int InserSort(int *a, int n) { int ...
这个文件通常包含了Verilog模块的定义,其中包含了进行排序操作的逻辑。Verilog模块是可重用的代码单元,类似于其他编程语言中的函数或类。在这个特定的案例中,模块可能被命名为"SortingOrder",并包含输入和输出...
这种文件包含了数据窗口的所有定义,包括结构、样式、查询逻辑以及排序功能的具体实现。 "使用说明.txt" 文件则提供了关于如何导入和使用该排序控件的指南。通常,它会包含以下步骤: 1. 导入"u_dwpublicgride.sru...
根据给定的文件信息,我们可以总结出以下几个关键的数据结构与排序算法的知识点: ### 一、数据类型定义 首先,程序定义了一些基本的数据类型和结构体。这些定义为后续的操作提供了必要的基础。 #### 1.1 基本...
这些查找算法各有优缺点,适应不同的场景,例如顺序查找适用于小规模数据或无序数据,而二分查找则要求数据已经排序,二叉查找树和哈希表则提供了更快的查找速度。 总的来说,这份实验报告旨在通过实际操作和分析,...
- 待排序表的数据元素抽象数据类型定义为包含关键字KeyType的结构,假设KeyType为整型。 7. **插入排序** - 插入排序分为直接插入排序和Shell排序。 - **直接插入排序**的算法思想是将每个元素插入到已排序部分...
在IT行业中,排序系统是必不可少的一部分,特别是在大数据处理和算法设计中。本项目是一个小型的排序...开发者可以根据实际需求选择合适的排序方法,同时也可以通过这个系统学习和理解各种排序算法的原理和性能差异。
在这个代码中,我们首先定义了一个数组`raw`来存储原始数据,然后定义了两个数组`num`和`idx`来存储排序后的数据和索引。接着,我们使用冒泡排序算法来排序`num`数组,并将索引也同时排序。最后,我们打印出排序后的...
总结来说,"动态链表的建立及排序"涉及的主要知识点有:链表数据结构、动态内存分配、节点定义与创建、链表插入操作以及链表排序算法(如插入排序)。通过理解这些概念,你可以有效地处理输入的正整数序列,并构建一...