在线等 求一查询语句 。。。。

wanglovec 2009-08-11 12:03:52
数据表如下:

portID, bycar,pocketCount,byDateTime

1 1 2 2009-08-10 16:48:00

2 2 3 2009-08-10 15:48:00

4 3 4 2009-08-10 15:48:00

4 3 5 2009-08-10 15:50:00

4 3 5 2009-08-11 15:50:00

去掉 组中日期时间最小的那条记录 的 (portID ,bycar 相等,且日期为同一年同一天 的记录为同一组)


则上述表 结果应该为

portID, bycar,pocketCount,byDateTime

1 1 2 2009-08-10 16:48:00

2 2 3 2009-08-10 15:48:00


4 3 5 2009-08-10 15:50:00

4 3 5 2009-08-11 15:50:00

...全文
53 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2009-08-11
  • 打赏
  • 举报
回复
select * from yourTable t
where not exists (
select 1 from yourTable
where portID=t.portID
and bycar=t.bycar
and int(byDateTime)=int(t.byDateTime)
and pocketCount>t.pocketCount
)
Breeze唐 2009-08-11
  • 打赏
  • 举报
回复
学习!
ycyhjj2865 2009-08-11
  • 打赏
  • 举报
回复
提示:
1.对该表增加一个主键 .(如果记录众多,那么请新创建同样结构的表但增加一个主键,然后将这个表追加到新表中)
2. 解决分组问题. (这不是问题,只是要给出分组条件罢了)
3. 解决分组后筛选出 byDateTime 字段的 中最小的值.
如果字段最小值是一条记录还好办,如果该字段最多条记录重复怎么办?
[ 用 TOP 1 不行,用SQL 内置的First 函数也不行........还是用AccessVBA中的DFirst()函数吧.]

4. 最后使用 NOT IN 运算符将 byDateTime 字段最小的那一条排除掉.
5. 结束工作.

注意本人为了更容易理解创建了2个 中间查询才得到 byDateTime 字段的中最小的那条一条记录的.如果你喜欢也可以通过比较复杂一点的SQL语句 代替这2个查询...

-.-
虽然达到了你的要求,但本人没有理解这样做的意义是什么....算了,还是自己云雾中吧.....
wanglovec 2009-08-11
  • 打赏
  • 举报
回复
再顶 难道无解吗?
wanglovec 2009-08-11
  • 打赏
  • 举报
回复
自己顶

7,712

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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