SQL Server Разница в датах Запрос и TRIM - PullRequest
0 голосов
/ 25 мая 2018

У меня есть очень сложный сценарий ниже, если кто-то может помочь, я был бы очень признателен.

У меня есть две таблицы:

TX

TX_External

TX имеет два столбца: ID & Date_Reported

TX_External имеет два столбца: ID & Date_Received

По сути, я хочу найти разницу в днях между Date_Received из TX_external и Date_Reported fromСтол TX.Это должны быть ТОЛЬКО РАБОЧИЕ ДНИ (без выходных или банковских выходных).

Таким образом, мой конечный результат должен выглядеть следующим образом

Customer ID |Days_Taken

ОСНОВНАЯ ПРОБЛЕМА.Моя основная проблема заключается в том, что идентификаторы в обеих таблицах немного отличаются друг от друга, например:

Tx-ID = AB_123456_ABC

TX_External- ID = AB_123456

Так что, как выможно увидеть, что они похожи и относятся к одной и той же транзакции, но к идентификатору таблицы TX добавлены случайные дополнительные символы после номера в версии «_ABC», и это могут быть дополнительные цифры, буквы, скобки и т. д. (так AB_123456_ABC, AB_123456_E (1), AB_123456_H, так далее).Чтобы добавить к путанице, идентификатор не один согласованный размер, т. Е. Все они не AB_123456, как некоторые могут быть AB_12345678! Обрезать до второго _ и обрезать

Как мне обрезать его так, чтобы я мог получить его точно так же, как идентификатор Tx_External (AB_123456), а затем это позволит мне сделать совпадение такдля этого точного идентификатора я могу рассчитать рабочий день?Могу ли я сделать все это одним запросом?

Извините за подробное описание заранее, более чем рад объяснить.

1 Ответ

0 голосов
/ 25 мая 2018
   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
...