怎么修改同一天内最新的那条数据的valid字段为true,根据personId字段来取count(personId)>2的数据,就是不知道怎么判断是同一天的,求帮助
描述的太模糊,你在表里添加一个日期字段,字段默认值用getdate() 不就可以了吗?
不是 我的意思是日期字段已经有了 可能一天里有personId相同的几条数据 比如 2012-3-12 号 有personId为123456的 总共6的数据 我想取这一天里的最新的那条数据 而现在不止一天 想区数据库中所有一天内最新的数据。
@青空下的思念: 因为你没有贴出表以及字段,我就按照自己的方式写给你,如下:
select * from tab_test where id in (
select max(id) from tab_test group by convert(char,date,10))
@青空下的思念:
id:表字段的ID。
date:就是你的日期字段。我的日期格式:“2014-05-11 20:58:30.590”,你根据自己的日期格式调整convert(char,date,10))。也就是根据年月日分组后取出最大的ID。(最大的ID也代表一天当中最新的记录,你根据你的实际需求 调整该字段)
@Hyman.Ro: 谢谢哈 现在还有个问题就是如果我一天中有几个不同的PersonId(第二列),那怎么求所有PersonId在该天中的最新的数据呢 ,其实就相当于录好多人的数据,有可能一个人的录了几次,取每个人当天最后一次录的数据。抱歉啊 可能表达能力比较欠缺。说的不太明白
1 111 2014-02-22 10:00:00.000 NULL
2 111 2014-02-22 09:22:00.000 NULL
3 111 2014-02-22 07:22:00.000 NULL
4 222 2014-02-22 08:22:00.000 NULL
5 222 2014-02-22 03:22:00.000 NULL
6 333 2014-02-22 05:22:00.000 NULL
7 444 2014-02-23 05:22:00.000 NULL
8 444 2014-02-23 07:22:00.000 NULL
9 444 2014-02-23 02:22:00.000 NULL
10 555 2014-02-23 02:22:00.000 NULL
11 555 2014-02-23 03:22:00.000 NULL
如上列数据 最后取到的应该是
1 111 2014-02-22 10:00:00.000 NULL
4 222 2014-02-22 08:22:00.000 NULL
6 333 2014-02-22 05:22:00.000 NULL
8 444 2014-02-23 07:22:00.000 NULL
11 555 2014-02-23 03:22:00.000 NULL
@青空下的思念: 上面都给你解答了么。把ID 换成personId 就可以了,如下:
select * from tab_test where id in (
select max(personId) from tab_test group by convert(char,date,10))
如果你能够发现自己将问题描述清楚的能力不够的话。建议一个方法,把数据表的结构写出来,再把数据模拟10条,
然后将需要的数据结果写在下方,这样可能大家更容易理解你要的是什么。
嗯嗯 下次注意了 自己表达的不太清楚 谢谢提醒
DATEDIFF() 函数返回两个日期之间的天数。
语法
DATEDIFF(datepart,startdate,enddate)
DATEDIFF(day,“2014-05-11 20:58:30.590”,“2014-05-11 20:58:30.590”)=0
不好意思哈 自己表达的不太清楚 让你理解错了