Sql 选择具有最新日期的唯一记录
我正在尝试获取一个T-SQL查询,以从表中读取订单,并显示一段时间内(即过去7天)来自公司的最新订单。如果公司在此期间下了多个订单,则仅显示最新订单。我的查询在下面,并在后面生成结果。我想得到的结果是之后的表格Sql 选择具有最新日期的唯一记录,sql,tsql,Sql,Tsql,我正在尝试获取一个T-SQL查询,以从表中读取订单,并显示一段时间内(即过去7天)来自公司的最新订单。如果公司在此期间下了多个订单,则仅显示最新订单。我的查询在下面,并在后面生成结果。我想得到的结果是之后的表格 select StoreID, OrderID, ModDate from Orders where ModDate > (getdate() - 7) order by StoreID desc, ModDate desc 上述SQL的输出产生: St
select StoreID, OrderID, ModDate
from Orders
where ModDate > (getdate() - 7)
order by StoreID desc, ModDate desc
上述SQL的输出产生:
StoreID OrderID ModDate
======= ======= =======================
6093 188954 2018-08-31 12:56:09.690
6093 188883 2018-08-30 13:54:50.520
6092 189215 2018-09-06 11:01:35.257
5994 189182 2018-09-05 22:20:25.907
5994 189159 2018-09-05 17:11:22.200
5994 189169 2018-09-05 17:06:16.003
5994 189163 2018-09-05 16:04:23.683
5994 189123 2018-09-05 13:13:16.523
5994 189124 2018-09-05 13:10:30.750
我想要的输出:
StoreID OrderID ModDate
======= ======= =======================
6093 188954 2018-08-31 12:56:09.690
6092 189215 2018-09-06 11:01:35.257
5994 189182 2018-09-05 22:20:25.907
我尝试使用distinct,希望它只选择StoreID,即选择distinct StoreID。。。但这没什么区别。要使此查询正常工作,我缺少什么?在最坏的情况下,我可以按原样使用数据,并且不让C显示重复的StoreID,但我更希望从良好的SQL获得正确的输出
谢谢。您可以尝试按StoreID colunm制作行号,然后按ModDate desc下单 然后得到rn=1的数据 问题1: :
谢谢你,施德。。。很好用
CREATE TABLE T(
StoreID int,
OrderID int,
ModDate datetime
);
insert into t values (6093,188954,'2018-08-31 12:56:09.690');
insert into t values (6093,188883,'2018-08-30 13:54:50.520');
insert into t values (6092,189215,'2018-09-06 11:01:35.257');
insert into t values (5994,189182,'2018-09-05 22:20:25.907');
insert into t values (5994,189159,'2018-09-05 17:11:22.200');
insert into t values (5994,189169,'2018-09-05 17:06:16.003');
insert into t values (5994,189163,'2018-09-05 16:04:23.683');
insert into t values (5994,189123,'2018-09-05 13:13:16.523');
insert into t values (5994,189124,'2018-09-05 13:10:30.750');
select StoreID,OrderID,ModDate
from (
SELECT *,row_number() OVER(PARTITION BY StoreID order by ModDate desc) rn
FROM T
)t1
where rn = 1
| StoreID | OrderID | ModDate |
|---------|---------|--------------------------|
| 5994 | 189182 | 2018-09-05T22:20:25.907Z |
| 6092 | 189215 | 2018-09-06T11:01:35.257Z |
| 6093 | 188954 | 2018-08-31T12:56:09.69Z |