1.Row_number over(partiotion by x1 order by x2 desc)
函数作用:将查询出的数据按照x1字段进行分组(类似group by 但是不会合并数据 )后,根据x2字段进行排序。例子:班级为2(partition by)的数据有4条,成绩为80 , 90 , 100 , 23 (order by)排序后为100,90,80,23 并将查询结果赋值序号 1,2,3,4。
2.convert(目标转化后的数据类型,目标字段,style值) 转化时间函数
例如:convert(varchar(100),A.datetime, 23) ,输出后格式为yyyy-MM-dd的字符串
3.charindex(目标字符串A,被查找的字符串B) 查询B中是否含有A字符串
例如:charIndex(abc,dddabcdd),返回的为下标值(不为0代表B中含有A),但是可以用于判断B中是否存在A字符串
4.DateDiff(单位,比较时间A,目标时间B) 用于比较时间B和A的差值,单位可以为day,seconds等
简单理解就是返回B-A的值(单位可以为day也可以为小时,分钟,秒等)
5.with name1 as(sql1 union all sql2 inner join name1 on sql2.xx = name1.xxx ) sql3
比较复杂的一个递归查询,从sql1(此sql也可以是复杂sql,但是用于获取基础数据)查询获取的值,放入name1的临时表中,在union all下一部分的sql中进行内连接查询,将查询后的值,在叠加存放到name1的表中,再进行递归查询(递归只递归union all下面的sql),直到on后的条件不满足为止 。最后name1 的临时表只能用于sql3的语句中使用
union all 只能将上面与下面返回字段一样的sql值合并,可存放重复数据。