繁体   English   中英

从 tbl1 获取所有记录并从 tbl2 获取匹配(或下一个关闭)记录,匹配基于 Client# 和从 tbl1 到 tbl2 的日期

[英]Get all records from tbl1 and matching (or the next close) records from tbl2, match is based on Client# and Date from tbl1 to tbl2

我正在尝试从 Tbl1 匹配(或下一个更大的匹配)到 Tbl2。

标准是

  1. 从 tbl1 中提取所有记录并从 tbl2 中关闭或相等匹配
  2. 从 tbl2 中查找匹配记录(匹配基于 ClientNo 和/或日期)
  3. tbl2 匹配应基于大于或等于 tbl1 日期的日期。
  4. 结果不应有来自 tbl1 或 tbl2 的任何重复项

第一个匹配应该是 tbl2 中大于或等于 tbl1 中 date1 的第一个 date2

如果同一日期有多个记录,则应根据 tbl2 中的 RefNO 选择下一个更大或相等的日期。

tbl1 包含

RecNo  ClientNo   Date1
-----------------------------
  4      1001      2/6/2017
  3      1001      2/4/2018
  1      1001      2/5/2018
  2      1001      2/5/2018
  5      1002      3/8/2018
  9      1002      3/9/2018
 10      1002      4/11/2019

tbl2 包含

RecNo   ClientNo   Date2      RefNo
-----------------------------------
   1    1001       2/5/2017     1
   4    1001       2/5/2018     2
   2    1001       2/5/2018     4
   3    1001       2/6/2018     5
   5    1002       3/9/2018     1
   6    1002       4/10/2019    2

查询结果

RecNoTbl1   ClientNo   Date1       RecNoTbl2   Date2     RefNo
---------------------------------------------------------------
    4        1001      2/6/2017      4         2/5/2018    2
    3        1001      2/4/2018      2         2/5/2018    4
    1        1001      2/5/2018      3         2/6/2018    5
    2        1001      2/5/2018      NULL      NULL       NULL
    5        1002      3/8/2018      5         3/9/2018    1
    9        1002      3/9/2018      6         4/10/2019   2
   10        1002      4/11/2019     NULL      NULL       NULL

我尝试使用 ROW OVER PARTITION 但这没有用。

您可以像这样使用左连接查询

Select tb1.*, tb2.* from table1 tb1 
Left join table2 tb2 ON tb1.clientno = tb2.clientno Where tb1.date>=tb2.dare

对于独特的,您可以使用 distinct 像这样: select distinct tb1.title

检查此链接

有关不同的更多信息

对不起,如果我对事情没有很详细。 我从电话发帖。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM