查詢相同記錄的最大日期的行

2021-08-09 22:12:42 字數 999 閱讀 2752

假設有這樣一張門禁記錄表,姓名,打卡地點,和日期,乙個姓名可以有多個日期,那麼,怎樣查詢乙個姓名對應的最大日期的那一行記錄呢?

以下介紹2種方法來實現。

首先建立測試表:

create table tablea

(names varchar(20),gateno int ,d_date date

)insert into tablea values('張三',1,'2017-09-30')

insert into tablea values('張三',2,'2017-09-29')

insert into tablea values('李四',2,'2017-09-30')

insert into tablea values('李四',3,'2017-09-26')

insert into tablea values('李四',2,'2017-09-15')

insert into tablea values('張三',3,'2017-05-15')

方法一:使用max()函式來查詢:

select a.names,a.gateno,a.d_date from dbo.tablea a where a.d_date = (select max(b.d_date) from dbo.tablea b where a.names=b.names)

方法二:使用row_number()函式來查詢:

select a.names,a.gateno,a.d_date 

from (

select names,gateno,d_date,row_number() over(partition by names order by d_date desc) as rows

from dbo.tablea 

) a where a.rows = 1

效果如下圖所示:

sql 查詢相同記錄下日期最大的 一條

日期 編號 倉庫 數量 2012 05 31 c001 a店 136.00 2012 05 29 c001 a店 139.00 2012 05 29 c001 b店 5.00 2012 05 30 c001 b店 6.00 我只顯示最大日期的記錄,這個sql怎麼寫呀?即日期 編號 倉庫 數量 201...

sql 查詢相同記錄下日期最大的 一條

sql 查詢相同記錄下日期最大的 一條 日期 編號 倉庫 數量 2012 05 31 c001 a店 136.00 2012 05 29 c001 a店 139.00 2012 05 29 c001 b店 5.00 2012 05 30 c001 b店 6.00 我只顯示最大日期的記錄,這個sql怎...

SQL 查詢相同記錄下日期最大的一條資料

日期 編號倉庫 數量2012 05 31 c001 a店136 2012 05 29 c001 a店139 2012 05 29 c001b店5 2012 05 30 c001b店6 我只顯示最大日期的記錄,這個sql怎麼寫呀?即日期 編號倉庫 數量2012 05 31 c001 a店136 201...