sql 难题 求解!

[复制链接]
查看11 | 回复5 | 2008-7-27 13:36:06 | 显示全部楼层 |阅读模式
有如下表 叫做test表吧
datetimesteststring

08-05-05
A
08-05-06
A
08-05-07
A
08-05-05
B
08-05-06
B
08-05-07
B
要求一条语句 滤掉teststring字段的重复值 并且筛选出datetimes的最后一天的那条记录
结果应该是
datetimesteststring

08-05-07
A
08-05-07
B
求解!!!
我写了一条语句
selectdistinct testString , max(dates) from test 报错
就算不筛选日期 我发现distinct前边不能放其他列 必须放后边?为什么?
此表为临时想出来的表 这些方法是可以 但是不能达到我的要求 我的那个表 有一列数据 要求显示 但是不要求分组 如果放在select后边又不在group by里 就会报错 但是我不想把这个字段分组 该怎么办?

回复

使用道具 举报

千问 | 2008-7-27 13:36:06 | 显示全部楼层
非常简单的SQL,一楼正确select teststring,max(datetimes) from test group by teststring你报错的原因是缺少Group By子句,聚合函数max用于统计时,如果有其它非聚合字段的话,必须在Group By中包含。如果都是聚合字段的话,就可以不用例如:SELECT COUNT(*),MAX(datetimes) FROM testdistinct关键字是表示取出的字段值记录完全相同的多行合并为一行一般用于聚合是为了统计不重复的记录项,但是不能使用Count(*)只能COUNT(Distinct [Field])补充:有一列数据 要求显示 但是不要求分组 如
回复

使用道具 举报

千问 | 2008-7-27 13:36:06 | 显示全部楼层
select max(b.datetimes),a.teststring from (select distinct teststring from test) as a inner join teststring as b where a.teststring =b.teststring
回复

使用道具 举报

千问 | 2008-7-27 13:36:06 | 显示全部楼层
二楼的该BS下,写的一样啊!
回复

使用道具 举报

千问 | 2008-7-27 13:36:06 | 显示全部楼层
用这条查询方法试试select testString,max(datetimes) from test Group BY testString
回复

使用道具 举报

千问 | 2008-7-27 13:36:06 | 显示全部楼层
select teststring,max(datetimes) from test group by teststring;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行