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
下面有一个非常棘手的场景,如果有人能提供帮助,我将不胜感激。
我有两个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