我正在尝试在SSMS中编写SQL以按日期连接两个表。
表A保存交易发生的实际日期
SELECT A.Client,
A.TrnDate,
FROM dbo.Transation A
Client TrnDate
00011547 2001-07-17 00:00:00.000
00011547 2013-07-04 00:00:00.000
00011547 2013-11-13 00:00:00.000
00011547 2014-12-14 00:00:00.000
00011547 2014-12-14 00:00:00.000
表B列出了交易应从有效期开始按成本计算的费率。
SELECT B.Client,
B.Effdate,
B.Rate
FROM dbo.ChargeRate B
Client EffDate Rate
00011547 2008-04-01 00:00:00.000 1223
00011547 2013-05-28 00:00:00.000 1224
00011547 2013-10-01 00:00:00.000 1302
00011547 2014-01-01 00:00:00.000 1355
00011547 2014-04-01 00:00:00.000 1376
00011547 2014-07-01 00:00:00.000 1397
正如您所看到的,交易日期可以介于有效期间,我希望连接表格如下所示。
Client TrnDate Rate
00011547 2001-07-17 00:00:00.000 1223
00011547 2013-07-04 00:00:00.000 1224
00011547 2013-11-13 00:00:00.000 1302
00011547 2014-12-14 00:00:00.000 1397
00011547 2014-12-14 00:00:00.000 1397
我将不胜感激。
先谢谢你菲尔
答案 0 :(得分:0)
您可以使用APPLY运算符
轻松完成select
[T].[Client],
[T].[TrnDate],
[CR].[Rate]
from dbo.Transaction [T]
outer apply (
select top 1
[CR].[Rate]
from dbo.ChargeRate [CR]
where
[CR].EffDate <= [TrnDate]
order by
[EffDate] DESC
) [CR]