У меня есть большой список не избыточных идентификаторов и последовательностей, как показано ниже (таблица A).
Во второй таблице у меня есть несколько записей идентификаторов, позиций и букв, подлежащих изменению (таблица B).
Что я хотел бы сделать, это заменить конкретную c буквы в указанных c позициях в основной последовательности таблицы A на основе изменений, приведенных в таблице B.
Я пытаюсь сделать это с помощью функции STUFF()
- пример мой запрос приведен ниже - но в идеале я хотел бы, чтобы все 4 изменения proteinID P12111
выполнялись одновременно в основной последовательности.
SELECT
A.[proteinID],
STUFF(A.[proteinSeq], CAST(B.[position] AS INT), 1, B.[change_to] ) AS [proteinSeq]
FROM
[dbo].[TableA] A
LEFT OUTER JOIN
[dbo].[TableB] B ON A.proteinID = B.proteinID
С помощью вышеуказанного запроса я получаю 4 раза вторую последовательность с одним изменением за раз.
Я не уверен, смогу ли я получить запрошенный вывод, используя STUFF()
. С другой стороны, я бы хотел избежать CURSOR
, если это возможно. Любой совет, пожалуйста?