Office中国论坛/Access中国论坛

标题: 多记录分组显示的问题 [打印本页]

作者: pho    时间: 2006-3-27 04:01
标题: 多记录分组显示的问题
表的内容如下:
类别 数量 名称
1       2       张三
1       5       李四
1       1       李四
2       4       赵五
2       10      陈七
2       6       王六
2       9       赵五
3       8       孙八
3       3       钱九
3       2       孙八
3       1       吴二

我要显示每个类别里的数量最大的哪条记录的名称,SQL语句如何写?

结果应该显示以下的记录:
1       5       李四
2       10      陈七
3       8       孙八
作者: fan0217    时间: 2006-3-27 04:33
应该是:

SELECT 表1.类别,  表1.姓名, Sum(表1.数量) AS 数量之总计
FROM 表1
GROUP BY 表1.类别, 表1.姓名;

作者: pho    时间: 2006-3-27 17:19
楼上朋友的结果是:

类别 名称 数量之总计
1    李四   6
1    张三   2
2    陈七   10
2    王六   6
2    赵五   13
3    钱九   3
3    孙八   10
3    吴二   1

不是我要的结果。
作者: 无忧    时间: 2006-3-27 17:48
SELECT 表1.类别,  表1.姓名, max(表1.数量) AS 数量之总计
FROM 表1
GROUP BY 表1.类别, 表1.姓名;

作者: sgrshh29    时间: 2006-3-27 18:13
SELECT 表1.* FROM 表1 INNER JOIN (SELECT 表1.类别, max(表1.数量) As 数量 FROM 表1 GROUP BY 类别) As 表2 ON (表1.类别 = 表2.类别) AND (表1.数量 = 表2.数量)  
作者: wwwwa    时间: 2006-3-27 19:08
SELECT *
FROM tt AS a
WHERE 数量=(select top 1 数量 from tt where 类别=a.类别 order by 类别,数量 desc);

作者: wuaza    时间: 2006-3-27 20:38
4楼的不适用于有重复记录的情况。

5、6楼的都正确。5楼的中规中矩,6楼的用到了相关子查询,更精彩些。
作者: pho    时间: 2006-3-30 04:17
谢谢大家
作者: zhanguoru    时间: 2006-3-30 04:20
SQL比较难,偶还看不懂




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3