Вы можете использовать Group By для внутреннего запроса, а затем DATEDIFF
SELECT
Table1.EMP_ID,
Table1.EMP_NAME,
COALESCE(DATEDIFF(end_date, start_date),0) diff
FROM
(
SELECT EMP_ID, MIN(START_DATE) START_DATE, MAX(END_DATE) END_DATE
FROM Table2
GROUP By emp_ID
) t
RIGHT JOIN Table1 ON Table1.emp_id = t.emp_id
Используйте помехи escape()
метод, они дают механизму регулярного выражения команду интерпретировать эти символы буквально, а не как метасимволы:
$id = [regex]::escape($id)
можно также повернуться, команда к одному лайнеру (-path
может взять набор файлов):
Select-String -Path path\to\files\\* -Pattern ([regex]::escape($id)) -Quiet
Если строка $id уже содержит что-то как ВКЛАДКА, когда она передается Вам затем, я не знаю о созданном в методе для безопасного выхода из нее назад к "\t". Необходимо удостовериться, что сценарий передается корректная строка во-первых. Т.е. этому нужно к переданному 0x5C74 (\t) не 0x09 (ВКЛАДКА). Таким образом, выход должен быть сделан, когда строка поиска сначала определяется.
Regex. Escape выйдет из ВКЛАДКИ-> \t, но также выйдет из любого из этих символов, которые имеют значение в регулярных выражениях:
\, *, +?, |, {[, (), ^, $., #, и пробел
, например, .-> \.