sql中如何取重复的数据取时间最近的一条?

上传的图被百度吃了。
有字段 CZYH(住院号),IZRBQ(编码),CZRBQ(编码名称),DSJ(时间)。
现在要获取CZYH(有重复,因为病人转不同的科室)病人住院号最新的转科编码和名称。不管之前CZYH转了几次科室,现在只要取最新的转入的科室。

既然数据都重复,就时间不同,那就取max(时间)就行了吧
select 重复数据的列名1,重复数据的列名2,....,max(时间列) from table group by 重复数据的列名1,重复数据的列名2,....追问

我想在后面加个重复了的czyh 但是时间没有重复的 czyh 验证下,怎么加,我加了报错误。

追答

select * from table a inner join (select czyh,max(dsj ) from table group by czyh) b on a.czyh =b.czyh and a.dsj = b.dsj

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-12-15
select * from 表A as a inner join
(
select czyh,max(DSJ) as maxdsj From 表A Group by czyh
) as b
on a.czyh=b.czyh and dsj=b.dsj

如果你有自增长字段,用自增长字段来max一样的效果
第2个回答  2011-12-16
有时间列就取最大时间列
有自增的id就去最大id

如果是想返回一个记录集,并且有时间列的话可以这么做
select 重复列,时间列,其余列
inner join (select 重复列,max(时间列) as 时间列 from 表 group by 重复列) AS T2
on t1.重复列=t2.重复列 and t1.时间列 =t2.时间列
from 表 AS T1
第3个回答  2011-12-15
比如你数据库中有一个表tab(姓名name,登陆时间logTime)姓名有重复的名叫A

select top 1 * from tab where name='a' order by logTime desc
第4个回答  2011-12-15
select * from table t1 ,(select top(dsj) as dsj,czyh from table group by czyh) as t2
where t1.dsj=t2.dsj and t1.czyh =t2.czyh

sql中如何取重复的数据取时间最近的一条?
有时间列就取最大时间列 有自增的id就去最大id 如果是想返回一个记录集,并且有时间列的话可以这么做 select 重复列,时间列,其余列 inner join (select 重复列,max(时间列) as 时间列 from 表 group by 重复列) AS T2 on t1.重复列=t2.重复列 and t1.时间列 =t2.时间列 from 表 A...

SQL删除重复数据,保留最近修改的一条记录。
\/\/取到最近一条记录 select type,xtype from 表名 where type='P' and xtype='3' order by execTime desc limit 1;\/\/拿到type和xtype两个值 type1 和 xtype1 delete from 表名 where type='P' and xtype='3' and type<>type1 and xtype<>xtype1;这样就可以了。如果你的表里面有...

sql中如何取重复的数据取时间最近的一条?
既然数据都重复,就时间不同,那就取max(时间)就行了吧 select 重复数据的列名1,重复数据的列名2,...,max(时间列) from table group by 重复数据的列名1,重复数据的列名2,...

sql 如何查询同一个字段中,日期最近的那个记录
使用“order by 字段名 desc ”对日期字段进行倒序排序即可。sql语法:select * from 表名 order by 日期字段名 desc 其中,排序的时候order by 后面跟着需要进行排序的字段名,排序可以有两种,默认是asc升序(在sql中可以不写),如果希望降序排列的话,可以使用desc。如你想要最近的日期的话就只...

sql去重,同一个字段出现多条取一条的sql语句
要处理SQL去重问题,即在特定字段重复的情况下,仅保留该字段的唯一值并取其他字段的对应行,可以使用子查询结合窗口函数实现。首先,当要求按某字段分组并取每组中的第一条记录时,可以使用如下SQL语句:SELECT b.* FROM (SELECT a.*,ROW_NUMBER() OVER (PARTITION BY a.column) AS group_idx FROM...

数据库里2条记录相同。我想取其中一个时间最新的SQL语句怎么写?
select * from table_name where rowid = (select max(rowid) row_id from table_name where id = '');

sql重复数据只取一条记录
1、SQL SELECT DISTINCT 语句 在表中,可能会包含重复值。这并不成问题,不过,仅仅列出不同(distinct)的值。关键词 DISTINCT 用于返回唯一不同的值。语法:SELECT DISTINCT 列名称 FROM 表名称 使用 DISTINCT 关键词 SELECT DISTINCT Company FROM Orders 2、子查询限制返回结果 SELECT * FROM Test...

SQL 查询某个字段相同值的多条数据中,时间最近的那条记录
select * from tb a where not exists(select 1 from tb where id=a.id and time>a.time)

SQL查询问题,取重复数据中的任一条
select distinct(B) from A;这样就可以了啊 如果是完全相同的一条记录就用这个 select top 1 * from A group by B,C,D;

sql根据某一个字段重复只取第一条数据
select * from team where teamId in (select teamId from team group by teamId having count(teamId) > 1) 删除表中多余的重复记录,重复记录是根据单个字段(teamId)来判断,只留有rowid最小的记录 delete from team where teamName in(select teamName from team group by teamName having ...

相似回答