RowNumber函数
之前只是在分页存储过程中使用过RowNumber函数,最近在一项查询统计需要查询在一个单位中所有用户最新的一条职务信息。因为用户信息和职务信息是在两个表中存储的且职务信息有多条记录。如果使用常规的join查询的话,很难实现此种需求,如果使用RowNumber函数的话就非常方便了。
ROW_NUMBER() OVER(
[PARTITION BY column_1, column_2,…]
[ORDER BY column_3,column_4,…]
) as rank
此函数的作用是根据column1,column2分组同时排上序号,在每个组内根据column3,column4 排序。
这样的话,我们只需要查询 rank=1的数据就可以查出最新或者最老的数据了
case when 函数
case when 函数一般用的的也比较多。假如我们有个人员表,人员的状态有多个,那么关于人员状态的转换就有两种写法
第一种写法
case status when 1 thne '正常'
when 2 then '正常'
when 3 when '下线'
else '未知' as zt
第二种写法
case when status in (1,2) then '正常'
when status in(3) then '下线'
else '未知' as zt