表A中B字段,C字段相同的记录,只取D字段最高值的记录

yingshao419 2009-01-16 09:39:25
如表A

字段
B C D

a b 300
a b 200
b c 100
b c 200


只取出记录中的

a b 300
b c 200

因为四条记录中,有两条B,C字段值相同,只取一条,取哪条呢,取D字段值最高的记录



...全文
73 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2009-01-16
  • 打赏
  • 举报
回复
create table tb(B varchar(10), C varchar(10), D int)
insert into tb values('a' , 'b' , 300)
insert into tb values('a' , 'b' , 200)
insert into tb values('b' , 'c' , 100)
insert into tb values('b' , 'c' , 200)
go

select b , c , max(d) d from tb group by b , c

drop table tb

/*
b c d
---------- ---------- -----------
a b 300
b c 200

(所影响的行数为 2 行)
*/
dawugui 2009-01-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 yingshao419 的帖子:]
如表A

字段
B C D

a b 300
a b 200
b c 100
b c 200


只取出记录中的

a b 300
b c 200

因为四条记录中,有两条B,C字段值相同,只取一条,取哪条呢,取D字段值最高的记录
[/Quote]
select b , c , max(D) d from A group by b , c
ljluck7687 2009-01-16
  • 打赏
  • 举报
回复
select a.B,a.C,b.D
from
(select B,C from test group by B,C) a,
(select B,C,D from test order by B,C,D desc) b
where a.B=b.B and a.C=b.C
百年树人 2009-01-16
  • 打赏
  • 举报
回复
或者
SELECT * 
FROM A T
WHERE NOT EXISTS(SELECT * FROM A WHERE B=T.B AND C=T.C AND D>T.D)
nzperfect 2009-01-16
  • 打赏
  • 举报
回复
select b,c,max(d) as d from 表a group by b,c
百年树人 2009-01-16
  • 打赏
  • 举报
回复
select B,C,max(D)
from A
GROUP BY B,C

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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