绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
row_number()over(partition by)函数实际应用
2023-03-20 14:29:22

准备停用的组合项目

通过检索准备停用的收费项目,找到准备停用的诊疗项目,通过row_number()over(partition by columns order by columns )函数,按照项目id分组,项目编码排序。后取出 分组后id大于1的项目。然后通过一个嵌套查询取出值。

select distinct bbx05 
from  (select row_number() over(partition by c.bbx01 order by bbx04 ) id ,c.bbx01,BBX05,项目名称 
		from  bdu1 a 
			join (select bby01,BBY11 费别,bdn02 类别,BBY04 编码,BBY05 项目名称,BBY08 单位,bby25 金额,BBY31 停用时间 
				from BBY1 a join BDN1 b on a.BDN01=b.BDN01
				where BBY31='2019-06-15 23:00:00.000'
				      and BDN02='检验') b  on a.BBY01=b.BBY01
			join BBX1 c on c.BBX01=a.BBX01
			--order  by BBX04
			)a
where id>1
order by BBX05

--------------------------------------------20190811

前两天单位要搞一个什么生日提醒的,让我从数据库中检索当天过生的有哪些人。这个简单,随手就出来了。当时就想能否统计一下一个月内每天有多少人过生日,一下子就甍了,想了半天也没过去这个坎儿,过了两天突然就开窍,可以用row_number()over(partition by xx) order by xx)啊。

declare @bdate datetime,@edate datetime
set @bdate='2019-08-01 00:00:00'
set @edate='2019-08-31 00:00:00'

select  COUNT(id) 人数,bd 生日 from (
	select row_number()over(partition by right(convert(varchar(20),BD,23),5) order by BD) id
	,NAME,TEL
	,right(convert(varchar(20),BD,23),5) as BD
	,right(convert(varchar(20),GETDATE(),23),5) as CURRENT_DAY
	from BASIC_INFO 
	where 
	 right(convert(varchar(20),BD,23),5) between right(convert(varchar(20),@bdate,23),5) 
	and right(convert(varchar(20),@edate,23),5)
)a
group by bd
order by bd
一部分记录

分享好友

分享这个小栈给你的朋友们,一起进步吧。

SQLServer
创建时间:2023-03-20 14:06:14
美国Microsoft公司推出的一种关系型数据库系统。SQL Server是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,实现了与WindowsNT的有机结合,提供了基于事务的企业级信息管理系统方案。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 飘絮絮絮丶
    专家
戳我,来吐槽~