DB里存在这样的记录
NO COL1 COL2 COL3
1 A A A
1 B B B
1 C C C
2 D D D
2 E E E
3 F F F
3 G G G
检索出来的结果集要求是
NO COL1 COL2 COL3
1 A A A
2 D D D
3 F F F
也就是说以NO分组,只要每个NO号的第一条数据.
请问一个SQL语句能完成吗???
...全文
1827打赏收藏
帮忙看看,这样的结果集能不能用一个SQL语名实现.
DB里存在这样的记录 NO COL1 COL2 COL3 1 A A A 1 B B B 1 C C C 2 D D D 2 E E E 3 F F F 3 G G G 检索出来的结果集要求是 NO COL1 COL2 COL3 1 A A A 2 D D D 3 F F F 也就是说以NO分组,只要每个NO号的第一条数据. 请问一个SQL语句能完成吗???
fvb17321写的是对的
只需要加一个表别名就行了
SELECT NO,COL1,COL2,COL3 FROM (
SELECT NO,COL1,COL2,COL3,
ROW_NUMBER() OVER (ORDER BY NO ASC) AS ROW,
RANK() OVER (ORDER BY NO ASC) AS RANK
FROM TABLE
) a WHERE ROW=RANK
NO COL1 COL2 COL3
1 A A A
1 B B B
1 C C C
2 D D D
2 E E E
3 F F F
3 G G G
用db2排序函数可以这样:
SELECT NO,COL1,COL2,COL3 FROM (
SELECT NO,COL1,COL2,COL3,
ROW_NUMBER() OVER (ORDER BY NO ASC) AS ROW,
RANK() OVER (ORDER BY NO ASC) AS RANK
FROM TABLE
) WHERE ROW=RANK WITH UR
select a.no,a.col1,a.col2,a.col3
from table as a ,
(select no,min(col1) as col1
from table
group by no) as b
where a.no=b.no and a.col1=b.col1
col1是你的要取得的纪录关键字,如果有两列col1,col2就先取出两列再关联。