請問一條語句能否實現以下功能..

BenyMo 2003-05-21 02:12:42


有一表名為 Tb_ONE
其中有兩個字段

卡號 日期時間



其中的記錄是可以重復的..如

卡號 日期時間
1 2002.03.01 02:11:09
1 2003.03.01 18:02:01
2 2001.01.01 12:01:59
2 2002.03.09 12:00:00
3 2003.01.01 17:00:00
3 2001.06.04 05:01:01

我希望得到的表是第個卡號日期最在原那個記錄但不得大(可以得等於)於當前日期(不理會時間)
的一個記錄集如
卡號 日期時間
1 2003.03.01 18:02:01
2 2002.03.09 12:00:00
3 2003.01.01 17:00:00
...全文
33 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
triout 2003-05-22
  • 打赏
  • 举报
回复
上面的三种写法都能得到正确的结果,但使用第一种方式更简练,效率也更好。

对楼主的补充说明:我们给你回答问题并不是为了分数,只是一种热情,一种验证或别的,但当我们给出正确的解答后,也希望能有小小的收获,这样或许是对我们的一种鼓励与安慰、认可,但象你这样呢?没错,pengdali是厉害,难道我们就都很差吗?
fengxvhui 2003-05-21
  • 打赏
  • 举报
回复
如果考虑时间的话,
select 卡号,Max(日期时间) from tb_one where 日期时间<=getDate() Group By 卡号
不可以吗,它和
select * from tb_one where 日期時間=(select max(日期時間) from tb_one as tem where tem.卡號=tb_one.卡號 and tem.日期時間<=getdate())
以及
select * from tb_one a where 日期时间=(select top 1 日期时间 from tb_one b where b.日期时间<=getDate() and b.卡号=a.卡号 order by 日期时间 desc)
有什么区别。
summerrainlyy 2003-05-21
  • 打赏
  • 举报
回复
select * from ta_one where 日期时间 in (select 卡号,max(日期时间) from ta_one
group by 卡号)
triout 2003-05-21
  • 打赏
  • 举报
回复
select * from tb_one a where 日期时间=(select top 1 日期时间 from tb_one b where b.日期时间<=getDate() and b.卡号=a.卡号 order by 日期时间 desc)
triout 2003-05-21
  • 打赏
  • 举报
回复
select 卡号,Max(日期时间) from tb_one where 日期时间<=getDate() Group By 卡号
Yang_ 2003-05-21
  • 打赏
  • 举报
回复
更正:
select 卡號,max(日期時間)
from tb_one
where 日期時間<CONVERT(varchar(8), dateadd(day,1,getDate()),112))
group by 卡號


Yang_ 2003-05-21
  • 打赏
  • 举报
回复
select 卡號,max(日期時間)
from tb_one
where 日期時間<CONVERT(varchar(8), dateadd(day,1,getDate()),112))

pengdali 2003-05-21
  • 打赏
  • 举报
回复
(不理會時間):


select * from tb_one where 日期時間=(select max(日期時間) from tb_one as tem where tem.卡號=tb_one.卡號 and tem.日期時間<=CONVERT(varchar(10), getDate(),120))
pengdali 2003-05-21
  • 打赏
  • 举报
回复
<=getdate()

是:

但不得大(可以得等於)於當前日期(不理會時間)

a1n1 2003-05-21
  • 打赏
  • 举报
回复
更当前的日期时间有什么关系吗?
a1n1 2003-05-21
  • 打赏
  • 举报
回复
<=getdate()
是什么意思,有什么用呢?
pengdali 2003-05-21
  • 打赏
  • 举报
回复
select * from tb_one where 日期時間=(select max(日期時間) from tb_one as tem where tem.卡號=tb_one.卡號 and tem.日期時間<=getdate())
tracylmm 2003-05-21
  • 打赏
  • 举报
回复
Refrase a little clearer.

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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