Вы пытаетесь присоединиться к выражению dbo.SplitString2(xx.ParseThis, '&')
Содержимое возвращаемой таблицы будет варьироваться построчно в зависимости от значения xx.ParseThis
.
Определение таблиц, участвующих в объединении, не может коррелироваться на основе значений из других таблиц (и не имеет значения, что в этом случае в вашем примере только одна строка).
Для этого вам понадобится APPLY
.
SELECT xx.ParseThis,
p1.ID,
p1.Value,
p2.ID,
p2.Value
FROM (SELECT cast('Term1=2018FA&Term2=2019SP&EndDate=04/02/2019&Major=NURN' AS NVARCHAR(max)) AS ParseThis) xx
LEFT JOIN dbo.SplitString2('Term1=2018FA&Term2=2019SP&EndDate=04/02/2019&Major=NURN', '&') [p1]
ON p1.ID = 1
OUTER APPLY (SELECT *
FROM dbo.SplitString2(xx.ParseThis, '&') [p2]
WHERE p2.ID = 2) [p2]