SQL 服务器查询日期差异 AND TRIM

SQL Server Difference in dates Query AND TRIM

下面有一个非常棘手的场景,如果有人能提供帮助,我将不胜感激。

我有两个table:

TX

TX_External

TX 有两列:ID & Date_Reported

TX_External 有两列:ID & Date_Received

本质上,我想找出来自 TX_external 的 Date_Received 和来自 TX table 的 Date_Reported 之间的天数差异。必须是工作日(没有周末或银行假期)。

所以我的最终输出应该是这样的

客户编号 | Days_Taken

主要问题。 我的主要问题是两个 table 中的 id 略有不同,例如:

Tx-ID=AB_123456_ABC

TX_External- ID=AB_123456

如您所见,它们很相似,指的是同一笔交易,但 TX table ID 在“_ABC”版本中的数字后附加了随机附加项,这可能是附加数字字母括号等等(所以 AB_123456_ABC、AB_123456_E (1)、AB_123456_H 等)。更让人困惑的是,ID 不是一个一致的大小,即它们都不是 AB_123456,有些可能是 AB_12345678! 所以 trim 到第二个 _ 和 trim

我如何 trim 才能得到它与 Tx_External ID (AB_123456) 完全相同,然后这将让我进行匹配ID我可以计算出所用的工作日吗?我可以在一个查询中完成所有这些吗?

抱歉提前进行了大量描述,非常乐意进一步解释。

   select * from tx a 
        cross apply (select case when a.ID like '%[_]%[_]%' then
       replace(a.ID, reverse(left(reverse(a.ID), charindex('_', reverse(a.ID)))), '')
        else a.ID end txstripped)b
   join TX_External c cross apply (select case when c.ID like '%[_]%[_]%' then
     replace(c.ID, reverse(left(reverse(c.ID), charindex('_', reverse(c.ID)))), '')
     else ID end txexternal_stripped)d
   on b.txstripped=d.txexternal_stripped