sqlserver涉及到三种排序后生成的数字

文章详细描述了一个SQL查询,使用了DENSE_RANK,RANK和ROW_NUMBER窗口函数对数据进行处理,包括相同并列数字、有跳跃的位置以及分组后的顺序,最终以标识和日期为主键,项目为排序依据。
with temp as (
	select '1' 标识,'2023-01-01' 日期,'a' 项目
	union all select '1','2023-01-01','a'  
	union all select '2','2023-01-01','a'  
	union all select '2','2023-01-01','b'  
	union all select '3','2023-01-01','a'  
	union all select '3','2023-01-01','b' 
	union all select '3','2023-01-01','c' 
	union all select '4','2023-01-01','a'  
	union all select '4','2023-01-01','b' 
	union all select '4','2023-01-01','c' 
	union all select '4','2023-01-01','c' 
	union all select '4','2023-01-02','c' 
)
select 
	*,
	--相同并列数字
	(DENSE_RANK() over(partition by 标识,日期  order by 项目)) DENSE_RANK相同并列数字,
	--此位有跳跃
	RANK() OVER(PARTITION BY 标识,日期 ORDER BY 项目 DESC) RANK此位有跳跃,
	--分组后依旧按照顺序
	(row_number() over(partition by 标识,日期  order by 项目)) row_number分组后依旧按照顺序
from 
	temp
order by
	标识,日期,项目

查询结果图,主键为“标识和日期”,排序为“项目”

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值