sql 选择语句

有表如下;流水号身份证号上报日期13707.523707.633727.8。。。。。。。。。。。注意一二条主键是流水号现要求按每个身份证号查询表中所有距离当前时间最短的记... 有表如下;
流水号 身份证号 上报日期
1 370 7.5
2 370 7.6
3 372 7.8

。。。。。。。。。。。
注意一二条 主键是流水号 现要求 按每个 身份证号 查询表中所有距离当前时间最短的记录, 这个如何做
展开
 我来答
百度网友60b299d
2009-08-08 · TA获得超过214个赞
知道小有建树答主
回答量:206
采纳率:0%
帮助的人:156万
展开全部
你的日期格式不正确,假如正确的话,可以直接查出来.建议上报日期数据格式为 datetime 数据类型.
上次不正确.现在这样就可以.你自己把转换写下吧!!!假如你是现在这个格式的话..不过最好转换成合适的格式....
select a.*
from 表 as a
inner join
(
select 身份证号,max(上抱日期) as maxdate
from 表
group by 身份证号
)as b
on
b.maxdate=a.上抱日期
and
a.身份证号=b.身份证号
转换函数用 substring(),indexchar(),convert()或者cast()函数组合实现.... 分太少...就不一一写出来了..组合自己看下... 要不加分...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
如意又婉丽的雪花N
2009-08-08 · TA获得超过1213个赞
知道小有建树答主
回答量:630
采纳率:0%
帮助的人:1020万
展开全部
declare @t table (流水号 int, 身份证号 varchar(18), 上报日期 datetime);
insert @t values (1,'370','2009-07-05'),
(2,'370','2009-07-06'),
(3,'372','2009-07-08');

select a.流水号,a.身份证号,a.上报日期 from @t a
join
(
select 身份证号,MAX(上报日期) 上报日期 from @t group by 身份证号
) b on a.身份证号=b.身份证号 and a.上报日期=b.上报日期
order by a.流水号;

(3 行受影响)
流水号 身份证号 上报日期
----------- ------------------ -----------------------
2 370 2009-07-06 00:00:00.000
3 372 2009-07-08 00:00:00.000

(2 行受影响)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wanluo007
2009-08-09 · TA获得超过1123个赞
知道小有建树答主
回答量:836
采纳率:0%
帮助的人:773万
展开全部
确实需要考虑日期格式的问题,
以及日期是否都在当前日期之前,还是也存在着可能是当前日期之后的日期?
然后处理的话,可以使用游标来是实现。
呵呵,希望能有帮助,^_^
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liuzongsha
2009-08-10 · TA获得超过1609个赞
知道小有建树答主
回答量:1148
采纳率:0%
帮助的人:540万
展开全部
select 流水号,身份证号,MAX(上报日期) FROM 表 GROUP BY 流水号,身份证号
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
loveyurui
2009-08-08 · TA获得超过6556个赞
知道大有可为答主
回答量:2892
采纳率:33%
帮助的人:982万
展开全部
留个标记
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式