准备停用的组合项目
通过检索准备停用的收费项目,找到准备停用的诊疗项目,通过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