0

我有两张桌子A和B,

表 A

PstngDate   WorkingDayOutput
12/1/2020   221               
12/3/2020   327 
12/4/2020   509 
12/5/2020   418         
12/7/2020   390 
12/8/2020   431 
12/9/2020   244 
12/10/2020  246 
12/11/2020  314 
12/12/2020  301       
12/14/2020  411 
12/15/2020  530 
12/16/2020  554 
12/17/2020  300 
12/18/2020  375      
12/23/2020  402 
12/24/2020  302 
12/25/2020  269 
12/26/2020  382  
12/28/2020  608 

表 B

 PstngDate  HolidayOutput   isWorkingDay
  12/2/2020     20              0
  12/6/2020     24              0
  12/13/2020    31              0
  12/19/2020    82              0
  12/22/2020    507             0
  12/27/2020    537             0

预期输出:

PstngDate   WorkingDayOutput    HolidayOutput
12/1/2020   221                     20
12/3/2020   327 
12/4/2020   509 
12/5/2020   418                     24
12/7/2020   390 
12/8/2020   431 
12/9/2020   244 
12/10/2020  246 
12/11/2020  314 
12/12/2020  301                     31
12/14/2020  411 
12/15/2020  530 
12/16/2020  554 
12/17/2020  300 
12/18/2020  375                     589
12/23/2020  402 
12/24/2020  302 
12/25/2020  269 
12/26/2020  382                     537
12/28/2020  608 

我想用最近的较小日期列将 TableB 加入到 TableA 中。如果您看到 Expectedoutput 表,则 holidayoutput 列的第 18 天行是表 B 的第 19 天和第 22 天的总和。

4

2 回答 2

1

我想用最近的较小日期列将 TableB 加入到 TableA

这听起来像横向连接:

select a.*, coalesce(b.holidayquantity, 0) as holidayquantity
from a
outer apply (
    select top (1) b.*
    from b
    where b.pstng_date >= a.pstng_date
    order by b.pstng_date
) b
于 2020-12-30T12:14:50.223 回答
0

您可以按如下方式使用自左连接:

Select pstng_date, workingDayQuantity,
       HolidayQuantity,
       workingDayQuantity + HolidayQuantity as total
  From
(Select a.*, b.HolidayQuantity,
        Row_number() over (partirion by a.psrng_date order by b.pstng_date) ad rn
  From tablea a join tableb b On b.pstng_date > a.pstng_date) t
Where rn=1
于 2020-12-30T12:22:56.577 回答