Ваш запрос может быть упрощен до:
UPDATE ap
SET P01Dec = (SELECT FACTOR FROM Factor WHERE SHORTCUT = Ap.Ke01 + '|' + Ap.Ke02)
FROM dbo.KonfigTableOne Ap CROSS JOIN
dbo.KonfigTableTwo Ep
WHERE Ap.P02Dec = 1 AND
Ap.Ke01 + '|' + Ap.Ke02 IN ( . . . ) -- valid options here;
Я не вижу роли для динамического c SQL здесь.
Тем не менее, ваш запрос не чувственный, если KonfigTableTwo
имеет более одного ряда. Это приводит к нескольким возможным обновлениям KonfigTableOne
. Однако базы данных обновят строку только один раз с произвольным соответствием.
Я бы порекомендовал вам задать НОВЫЙ вопрос. Предоставьте пример данных, желаемых результатов и объяснение того, что вы пытаетесь достичь sh.