一道奇难的sql语法题,有谁会?????

wanghero 2003-11-13 10:02:57
表结构如下:
id b_sf b_sf_flag
1 干部 1
2 工人 1
3 农民 1
4 个体业 1
5 dfdf22 2
6 fff22 2
7 tt22 2
8 ggg33 3
9 fff33 3
我想得到的是 按照 b_sf_flag 分组 然后组内id最大的全部数据(包括b_sf字段)
上例中的第 4 7 9 是我要得到的数据


在access中可以使用 如下语句得到
SELECT MAX(Id) AS Expr1, B_sf_flag, first(B_sf) AS Expr2
FROM B_sf
GROUP BY B_sf_flag

但是在ms sql-server 中不能够得到正确数据,因为sql-server不认识 first关键字

谁会给高分.
...全文
68 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
welyngj 2003-11-13
  • 打赏
  • 举报
回复
select * from B_sf where id in( select max(id) id FROM B_sf
GROUP BY B_sf_flag)
sunshareforever 2003-11-13
  • 打赏
  • 举报
回复
占个座(同意楼上)
teaism 2003-11-13
  • 打赏
  • 举报
回复
select * from table A where id in (select max(id) from table where b_sf_flag
=A.b_sf_flag)
txlicenhe 2003-11-13
  • 打赏
  • 举报
回复
很奇怪你的表名和字段名居然一样:

Select * from 表名 a
where id = (Select max(id) from 表名 where b_sf_flag = a.b_sf_flag)
愉快的登山者 2003-11-13
  • 打赏
  • 举报
回复
select * from B_sf as A
where id = (select max(id) from S_sf where B_sf_flag = A.B_sf_flag)
txlicenhe 2003-11-13
  • 打赏
  • 举报
回复
如下即可:
Select * from b_sf a
where id = (Select max(id) from b_sf where b_sf_flag = a.b_sf_flag)

txlicenhe 2003-11-13
  • 打赏
  • 举报
回复
SELECT MAX(Id) AS Expr1, B_sf_flag, max(B_sf) AS Expr2
FROM B_sf
GROUP BY B_sf_flag

34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧