Sql server 根据日期顺序连接两个表
在SQLServer2008中,我想根据日期顺序联接两个表。更具体地说,我需要按照以下规则将Sql server 根据日期顺序连接两个表,sql-server,Sql Server,在SQLServer2008中,我想根据日期顺序联接两个表。更具体地说,我需要按照以下规则将付款表左键连接到配置文件表: UserId必须匹配 付款中的每个记录都与配置文件中的记录与付款前最接近的配置文件.CreationDate匹配。付款日期 举个简单的例子 Table Payments: UserId PayDate Amount 1 2012 400 1 2010 500 2 2014 600 Table Profiles: Use
付款
表左键连接到配置文件
表:
UserId
必须匹配付款
中的每个记录都与配置文件
中的记录与付款前最接近的配置文件.CreationDate
匹配。付款日期
Table Payments:
UserId PayDate Amount
1 2012 400
1 2010 500
2 2014 600
Table Profiles:
UserId CreationDate Address
1 2009 NY
1 2015 MD
2 2007 NJ
2 2013 MA
3 2008 TX
Desired Result:
UserId CreationDate PayDate Amount Address
1 2009 2010 500 NY
1 2009 2012 400 NY
2 2013 2014 600 MA
保证用户在付款前至少有1个档案
记录。另一个限制是我没有权限将任何内容写入数据库
我的想法是首先将
付款
与配置文件
,然后在与每个(UserId,PayDate)
元组匹配的记录组中,按CreationDate对其排序,然后选择最后一条记录。但是我不知道如何用SQL语言实现它,或者有没有更好的方法来实现这个合并?使用outerapply
SELECT py.UserId,
CreationDate,
PayDate,
Amount,
Address
FROM Payments py
OUTER APPLY (SELECT TOP 1 *
FROM Profiles pr
WHERE py.UserId = pr.UserId
and PayDate> CreationDate
ORDER BY CreationDate desc) cs
这是一个非常糟糕的数据库设计。。。外部应用与按日期区分订单的前1条记录