注册 登录
编程论坛 SQL Server论坛

求一sql问题

guqian 发布于 2010-04-19 11:49, 1230 次点击
我现在有个问题
如果我有一个表   字段id  主键  标示种子  字段  bianhao   字段  shuliang  数量     

现在我想查询  对字段  bianhao  进行分组  求出分组后的字段 shuliang  中最大值的  那个数据的  ID   这个应该怎么写SQL 语句

各位大哥帮帮忙
15 回复
#2
aei1352010-04-19 14:02
SELECT ID FROM TABLE A
INNER JOIN (SELECT BIANHAO,MAX(SHULIANG) as MSL FROM TABLE GROUP BY BIANHAO) B
ON A.BIANHAO=B.BIANHAO AND A.SHULIANG=B.MSL
#3
guqian2010-04-19 14:55
回复 2楼 aei135
二楼的朋友,非常感谢你的回答,你的回答我很满意,受教了。如果  字段  bianhao  为  NULL  时   空的这个组的ID  就查不出来   要是把空的这个组的最大数量的ID也求出来  该怎么查   非常感谢
#4
aei1352010-04-20 12:24
SELECT ID FROM TABLE A
INNER JOIN (SELECT BIANHAO,MAX(SHULIANG) as MSL FROM TABLE GROUP BY BIANHAO) B
ON ISNULL(A.BIANHAO,'')=ISNULL(B.BIANHAO,'') AND A.SHULIANG=B.MSL
#5
crszf2010-04-20 21:28
Select ID From TableName A Inner Join (Select BianHao,Max(ShuLiang) X From TableName Group By BiaoHao) B On IsNull(A.BianHao,'') = IsNull(B.BianHao,'') And A.ShuLiang = B.X
#6
mengzhihen2010-04-20 22:59
select id from table where shuliang in(select max(shuliang)from table group by bianhao)

初学,没有测试,有问题及时告诉,谢谢!
#7
guqian2010-04-21 10:20
四楼的朋友   非常感谢你的答案  我通过你的答案进行测试已经完全解决了这个问题  谢谢 。
六楼的朋友   你写的语句我原先也是这么想的  但在字段bianhao相同的一组数据中的字段shuliang与其他的字段bianhao的max(shuliang)相同的话   就会显示多个相同的bianhao   而达不到  相同bianhao的最大那个shuliang
#8
guqian2010-04-21 16:51
回复 4楼 aei135
非常感谢你的解答,现在我又有个问题不知道怎么解决,当在字段bianhao 相同的一组中,有多个字段shuliang是相同的时   通过语句得出的会有多个相同的bianhao,如果我只想查出其中的一条,不管哪一条都可以,这个查询语句该怎么写。
#9
mengzhihen2010-04-21 17:16
谢谢
#10
crszf2010-04-21 22:53
Select Distinct (Convert(VarChar(10),ID) + Convert(VarChar(10),BianHao)) From TableName A Inner Join (Select BianHao,Max(ShuLiang) X From TableName Group By BiaoHao) B On IsNull(A.BianHao,'') = IsNull(B.BianHao,'') And A.ShuLiang = B.X

#11
guqian2010-04-22 09:22
回复 10楼 crszf
10楼的朋友  你写的语句得到的是ID和BIANHAO连起来的字符串   不能得到我想要的结果  
#12
aei1352010-04-22 10:54
SELECT DISTINCT A.BIANHAO,A.SHULIANG FROM TABLE A
INNER JOIN (SELECT BIANHAO,MAX(SHULIANG) as MSL FROM TABLE GROUP BY BIANHAO) B
ON ISNULL(A.BIANHAO,'')=ISNULL(B.BIANHAO,'') AND A.SHULIANG=B.MSL
这样查询的结果集中就不能有ID列,不然由于ID是唯一的,结果集中BIANHAO肯定是会有重复值的
#13
guqian2010-04-22 11:24
回复 12楼 aei135
恩  谢谢
#14
linhui102010-04-25 18:38
回复 8楼 guqian
查出来后用top语句取第一个不就行了吗
#15
guqian2010-04-26 14:45
回复 14楼 linhui10
14楼的朋友  top  查出的是所有数据的第几行,不是各个组的第一行。  这个是我的看法,如果通过TOP 语句可以查出来   还请说说语句该怎么写。
#16
aina2010-05-10 22:19
2楼不错,学习了
1