簡體   English   中英

從 SQL 服務器中的另一個表中獲取最近的日期列值

[英]Get nearest date column value from another table in SQL Server

我有兩張桌子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

預期 output:

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 天的總和。

我想用最近的較小日期列將 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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM