CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  非技术版

关于一个很难的查询问题

楼主wangang2436()2005-08-03 08:35:05 在 MS-SQL Server / 非技术版 提问

有这样一个表     aTable  
  主键           号码         时间                                               地点    
  ID             C_NO         C_DT                                               C_ADDR  
  1               2               2005-01-01   12:00:00                   A  
  2               3               2003-11-01   12:00:00                   A  
  3               3               2004-01-01   11:23:00                   B  
  4               2               2005-04-15   02:12:00                   V  
  5               1               2003-02-05   03:24:00                   C  
  ..........................  
  想要得到.     所有同一号的最新时间的所有记录集,   (并且号码不允许重复)  
  例如:  
      ID             C_NO         C_DT                                               C_ADDR  
      1               2               2005-01-01   12:00:00                   A  
      3               3               2004-01-01   11:23:00                   B  
      5               1               2003-02-05   03:24:00                   C  
   
  100求救,   急需,,   谢谢     高手  
   
   
   
  问题点数:100、回复次数:6Top

1 楼hdhai9451(☆新人类☆)回复于 2005-08-03 08:40:30 得分 0

select   a.*  
  from   aTable   a  
  inner   join   (select   id,c_no,c_dt=max(c_dt)   from   aTable   group   by   id,c_no)b  
  on   a.id=b.id   and   a.c_no=b.c_no   and   a.c_dt=b.c_dt  
   
  Top

2 楼coolingpipe(冷箫轻笛)回复于 2005-08-03 08:44:56 得分 50

select   a.*  
  from   aTable   a  
  inner   join   (select   c_no,c_dt=max(c_dt)   from   aTable   group   by   c_no)b  
  on   a.c_no=b.c_no   and   a.c_dt=b.c_dt  
  Top

3 楼hdhai9451(☆新人类☆)回复于 2005-08-03 08:55:52 得分 50

更改一下  
  select   a.*  
  from   aTable   a  
  inner   join   (select   c_no,c_dt=max(c_dt)   from   aTable   group   by   c_no)b  
  on   a.c_no=b.c_no   and   a.c_dt=b.c_dt  
   
  按題意應該得到這個結果  
  3 3 2004-01-01   11:23:00.000 B  
  4 2 2005-04-15   02:12:00.000 V  
  5 1 2003-02-05   03:24:00.000 C  
  Top

4 楼wangang2436()回复于 2005-08-03 09:27:21 得分 0

由于表太多数据   达40万,   所以,select   max(C_DT),C_NO   from   aTable   group   by   C_NO    
  和select   a.*   from   aTable   a,(select   max(C_DT),C_NO   from   aTable   group   by   C_NO)t  
  where   a.c_no=t.c_no   and   a.c_dt=t.c_dt  
  两者查询的数据结果,行数不一致,   哪一定有问题Top

5 楼coolingpipe(冷箫轻笛)回复于 2005-08-03 10:46:45 得分 0

行数不一致,肯定跟数据量的大小没有关系  
  你可以看一下aTable里有没有编码跟时间都相同的纪录,可以这样查找一下  
   
  select   c_no,c_dt,count(1)   from   atable   group   by   c_no,c_dt   having   count(1)   >1  
  Top

6 楼libin_ftsafe(子陌红尘:TS for Banking Card)回复于 2005-08-03 10:56:59 得分 0

select    
          a.*  
  from    
          aTable   a  
  where    
          not   exists(select   1   from   aTable   where   C_NO=a.C_NO   and   C_DT>a.C_DT)  
  Top

相关问题

  • 查询难题
  • 查询的疑难
  • 关于在SQL SERVER中的一个"很难"的查询问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  • 一个很难的查询问题,涉及到数组
  • 很难的SELECT查询和SUM合计并计算的问题
  • 谁会?!很难的SELECT查询和SUM合计问题!!!
  • 一个应该不是很难的查询问题
  • 多表查询的问题,觉得很难
  • 关于一个很难的查询问题
  • 关于一个很难的查询问题

关键词

  • dt
  • bon
  • ainner join
  • from atable
  • max
  • group
  • select

得分解答快速导航

  • 帖主:wangang2436
  • coolingpipe
  • hdhai9451

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo