我有两个数据集。 Dataset1
有两个变量Name
和Date
。 Dataset1
有Name
,Date2
和Price
。
数据集1如下所示
Name Date
X1 2013-04-12
X1 2013-05-12
X1 2014-04-12
X2 2012-06-11
X2 2014-04-12
X2 2015-05-01
X3 2005-02-01
数据集2如下所示
Name Date1 price
X1 2013-04-11 1.1
X1 2013-05-12 2
X1 2014-04-13 3
X2 2012-06-13 2.2
X2 2014-04-12 0.6
X2 2016-05-01 0.5
对于Name
中的每个Date
和Dataset1
,我想找到具有最新(最新){{price
的{{1}} name
1}}等于或早于date1
Date
。
结果应如下所示:
dataset1.name = dataset2.name and max(date1 |date1<= date)
任何人都可以教我如何编码。
答案 0 :(得分:2)
在SQL Server中,最简单的方法是outer apply
:
select d1.*, d2.*
from dataset1 d1 outer apply
(select top 1 d2.*
from dataset2 d2
where d2.name = d1.name and d2.date1 <= d1.date
order by d2.date1 desc
) d2;
答案 1 :(得分:0)
SELECT TOP 1 [price]
FROM Dataset1
INNER JOIN Dataset2 ON Dataset1.[Name]=Dataset2.[Name]
WHERE [Date1] <= Date
ORDER BY Date1 DESC
这应该可以解决问题