SQL 特殊查询实例 分组、编号、排序、行号(咋个办呢 zgbn)
在数据库查询操作的时候,经常会遇到一些特殊的数据提取,比如按某些条件分组后,在组内排序附加租序号等等。
不多说直接上SQL:
表 TableName{A,B,C,D}
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 |
--DB2
--为查询结果添加序号,行号。
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 |