如何使用sql server management studio实现以下任务

时间:2016-07-28 12:57:17

标签: sql sql-server

我有两个数据集。 Dataset1有两个变量NameDateDataset1NameDate2Price

数据集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中的每个DateDataset1,我想找到具有最新(最新){{price的{​​{1}} name 1}}等于或早于date1 Date

结果应如下所示:

dataset1.name = dataset2.name  and max(date1 |date1<= date)

任何人都可以教我如何编码。

2 个答案:

答案 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

这应该可以解决问题