ROW_NUMBER()
CASE WHEN
Substring()
CONVERT()
SSRS报表,BIDS的使用
描述:返回结果集分区内行的序列号,每个分区的第一行从 1 开始。 语法:ROW_NUMBER()OVER(partition by c1 order by c2)
c1 是选择要分组的列,c2是排序的列,函数返回bitint类型。
实例:
表结构: STUDENT(SNO,SNAME,SSEX ,SBIRTHDAY ,CLASS)
COURSE(CNO,CNAME,TNO)
SCORE(SNO,CNO,DEGREE)
TEACHER(TNO,TNAME, TSEX ,TBIRTHDAY , PROF ,DEPART )
查询score中选学一门以上课程的同学中分数为非最高分成绩的记录:
select * from (select Sno,Cno,Degree,ROW_NUMBER()over(PARTITION BY Cno order by Degree DESC) as num from Score) S1 where S1.num > 1 order by Cno;结果:
Case具有两种格式。简单Case函数和Case搜索函数。
–简单Case函数
CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END–Case搜索函数
CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。 还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。
–比如说,下面这段SQL,你永远无法得到“第二类”这个结果 CASE WHEN col_1 IN ( ‘a’, ‘b’) THEN ‘第一类’ WHEN col_1 IN (‘a’) THEN ‘第二类’ ELSE’其他’ END
详细:http://www.cnblogs.com/yazdao/archive/2009/12/09/1620482.html
最常用到的方式如下(MYSql):
SUBSTR (str, pos)由 < str> 中,选出所有从第 < pos> 位置开始的字元。请注意,这个语法不适用于 SQL Server 上。
SUBSTRING (str, pos, len)由 < str>中的第 < pos> 位置开始,选出接下去的 < len> 个字元。
定义和用法
CONVERT() 函数是把日期转换为新数据类型的通用函数。
CONVERT() 函数可以用不同的格式显示日期/时间数据。
语法:
CONVERT(data_type(length),data_to_be_converted,style)data_type(length) 规定目标数据类型(带有可选的长度)。data_to_be_converted 含有需要转换的值。style 规定日期/时间的输出格式。
可以使用的 style 值:
Style IDStyle 格式100 或者 0mon dd yyyy hh:miAM (或者 PM)101mm/dd/yy102yy.mm.dd103dd/mm/yy104dd.mm.yy105dd-mm-yy106dd mon yy107Mon dd, yy108hh:mm:ss109 或者 9mon dd yyyy hh:mi:ss:mmmAM(或者 PM)110mm-dd-yy111yy/mm/dd112yymmdd113 或者 13dd mon yyyy hh:mm:ss:mmm(24h)114hh:mi:ss:mmm(24h)120 或者 20yyyy-mm-dd hh:mi:ss(24h)121 或者 21yyyy-mm-dd hh:mi:ss.mmm(24h)126yyyy-mm-ddThh:mm:ss.mmm(没有空格)130dd mon yyyy hh:mi:ss:mmmAM131dd/mm/yy hh:mi:ss:mmmAMhttp://www.cnblogs.com/CareySon/archive/2012/02/27/2369511.html