窗口函数——选择最近的一行
Posted
技术标签:
【中文标题】窗口函数——选择最近的一行【英文标题】:window function-choose the most recent row 【发布时间】:2017-08-19 15:19:22 【问题描述】:我需要根据创建日期选择最近的行。 这是我的桌子:
REF X REF Y EMLOYEE CREATION DATE
2879074 DLP/2015.01551-B.01 Didier 3/5/2015
2879074 DLP/2015.00841-A.01 Didier 2/5/2015
2879074 DLP/2015.00146-A.01 jacques 1/8/2015
2879074 DLP/2014.07840-A.02 1/6/2015
2879074 DLP/2014.05967-B.03 diet 6/21/2016
2879074 DLP/2014.05967-B.03 ext 6/21/2016
2879074 DLP/2014.05967-B.02 David 10/21/2015
2879074 DLP/2014.05967-B.02 ieva 10/21/2015
2879074 DLP/2014.05967-B.02 laetitia10/21/2015
2879074 DLP/2014.05967-B.02 PLN 10/21/2015
2879074 DLP/2014.05967-B.01 David 4/14/2015
2879074 DLP/2014.05967-B.01 ieva 4/14/2015
2879074 DLP/2014.05967-B.01 laetitia4/14/2015
2879074 DLP/2014.05967-B.01 PLN 4/14/2015
2733407 DLP/2014.00138-B.03 Andy 9/6/2016
2733407 DLP/2014.00138-B.03 Nell 9/6/2016
2733407 DLP/2014.00138-B.03 stephane9/6/2016
2733407 DLP/2014.00138-B.02 Andy 2/17/2016
2733407 DLP/2014.00138-B.02 Nell 2/17/2016
2733407 DLP/2014.00138-B.02 nicola 2/17/2016
2733407 DLP/2014.00138-B.02 diet 2/17/2016
2733407 DLP/2014.00138-B.01 herve 3/10/2015
2733407 DLP/2014.00138-B.01 nicola 3/10/2015
输出应该是:
Ref x Ref y employee Creation Date
2879074 DLP/2014.05967-B.03 diet 6/21/2016
2879074 DLP/2014.05967-B.03 ext 6/21/2016
2733407 DLP/2014.00138-B.03 Andy 9/6/2016
2733407 DLP/2014.00138-B.03 Nell 9/6/2016
2733407 DLP/2014.00138-B.03 stephane9/6/2016
我猜我必须使用窗口功能,但我无法列出正确的 REF Y。任何帮助将不胜感激 非常感谢
【问题讨论】:
你最近的一行不清楚(至少对我来说) 请张贴 DDL,DML 所涉及的表格,不要张贴图片。拥有此信息有助于其他人快速重现您的问题并更好地解决问题。以下是一些可能有助于您理解的示例。 --样本数据create table t1 ( id int ) insert into t1 values (1), (2), (1)
我当前的查询/我尝试过的内容: select id,count(*) as cnt from t1 group by id
我当前的结果: id cnt 1 2 2 1
我的预期结果: id cnt 1 2 2 1 1 2
发布涉及的表的ddl,dml有助于其他人快速测试,您可以更快地获得帮助
【参考方案1】:
如果您要查找最近的 5 行,您只需这样做:
SELECT TOP 5 * FROM [tablename] ORDER BY [Creation Date] DESC
不需要开窗函数,除非你想实现更复杂的。
【讨论】:
以上是关于窗口函数——选择最近的一行的主要内容,如果未能解决你的问题,请参考以下文章