在数据库查询操作的时候,经常会遇到一些特殊的数据提取,比如按某些条件分组后,在组内排序附加租序号等等。
不多说直接上SQL:
表 TableName{A,B,C,D}
TableName
A B C D
a 1 a1 b1
b 1 a2 b1
c 2 a1 b2
a 2 a2 b1
b 1 a1 b1
------------------------------------------------------------------------------------------------------------------------------------------
DB2:
--分组查询,组内排序添加序号
SELECTrank() over(partition BY t.A,t.B ORDER BY t.Cdesc ) son , t.* FROM TableName t ;
结果:
son A B C D
1 a 1 a1 b1
2 a 2 a2 b1
1 b 1 a2 b1
2 b 1 a1 b1
1 c 2 a1 b2
--为查询结果添加序号,行号。
SELECT rownumber() over (ORDER BY t.A) son ,t.* FROM TableName t ;
结果:
son A B C D
1 a 1 a1 b1
2 a 2 a2 b1
3 b 1 a1 b1
4 b 1 a2 b1
5 c 2 a1 b2
--
不多说直接上SQL:
表 TableName{A,B,C,D}
TableName
A B C D
a 1 a1 b1
b 1 a2 b1
c 2 a1 b2
a 2 a2 b1
b 1 a1 b1
------------------------------------------------------------------------------------------------------------------------------------------
DB2:
--分组查询,组内排序添加序号
SELECTrank() over(partition BY t.A,t.B ORDER BY t.Cdesc ) son , t.* FROM TableName t ;
结果:
son A B C D
1 a 1 a1 b1
2 a 2 a2 b1
1 b 1 a2 b1
2 b 1 a1 b1
1 c 2 a1 b2
--为查询结果添加序号,行号。
SELECT rownumber() over (ORDER BY t.A) son ,t.* FROM TableName t ;
结果:
son A B C D
1 a 1 a1 b1
2 a 2 a2 b1
3 b 1 a1 b1
4 b 1 a2 b1
5 c 2 a1 b2
给查询出的SQL记录添加序号列,解决方法有以下两种
第一:
select ROW_NUMBER() OVER (ORDER BY a.字段 ASC) AS XUHAO,a.* from table a
(table 为表名,字段为表a中的字段名)
第二:
select RANK() OVER (ORDER BY a. 字段 ASC) AS XUHAO,a.* from table a(table 为表名,字段为表a中的字段名)
出处:http://blog.csdn.net/xsfqh/article/details/6663895
--