首页 > 解决方案 > TSQL - 匹配另一个表中两个日期之间的日期

问题描述

我目前有两个表,tbl_Invoices

InvoiceNumber  NextBillingDate
------------------------------
    100            3/15/21
    200            3/31/21
    300            4/15/21
    400            5/15/21

tbl_GLPeriods

GLPeriod     PeriodStartDate     PeriodEndDate
----------------------------------------------
  250            3/3/21              4/3/21
  251            4/4/21              5/2/21
  252            5/3/21              6/3/21

我需要一个视图,它返回一个列,其中提供了下一个计费日期的 GL 期间,即:

InvoiceNumber  NextBillingPeriod
---------------------------------
    100              250
    200              250
    300              251
    400              252

如何查询以查找一列是否位于另一表的两列之间?我对如何做到这一点感到茫然,想着用CASE.

编辑:我目前在哪里,结构上不起作用,但它显示了我目前正在尝试的内容:

SELECT
    *,
    CASE
       WHEN tbl_Invoices.NextBillingDate BETWEEN (SELECT PeriodStartDate FROM tbl_GLPeriods) AS stdt 
                                             AND (SELECT PeriodEndDate FROM tbl_GLPeriods) AS endt  
          THEN endt.GLPeriod    
    END AS NextBillingPeriod
FROM
    tbl_Invoices

感谢@Charlieface 解决了这个问题:

select tbl_Invoices.InvoiceNumber, tbl_GLPeriods.GLPeriod 
from tbl_Invoices
left join tbl_GLPeriods on tbl_Invoices.NextBillingDate between tbl_GLPeriods.PeriodStartDate AND tbl_GLPeriods.PeriodEndDate

标签: sql-servertsql

解决方案


select InvoiceNumber, (select GLPeriod from tbl_GLPeriods where NextBillingDate between PeriodStartDate and PeriodEndDate) 'NextBillingPeriod' from tbl_Invoices

推荐阅读