Мне нужно обновить столбец в таблице на основании некоторого условия.
вот таблица -
DGTID | SKAcc | Linkedaccount | DGTStatus
1 8002180831 8102651144,8005370302 C
2 8005370302 8002170111 I
3 8002012348 I
Таким образом, для конкретного идентификатора DGT, если status = 'C' и если Linkedaccount присутствует в любом другом SKAcc, то DGTStatus для этого SKAcc также должен быть C.
Допустим, DGTId = 1, он имеет DGTStatus в виде 'C' и имеет связанный счет = '8005370302', который представляет собой SKAcc для DGTID = '2'. Таким образом, его DGTStatus также должен быть 'C'
Теперь я считаю, что основная часть здесь заключается в извлечении связанной учетной записи, поскольку может быть несколько разделенных запятыми связанных учетных записей.
Это то, что я написал, чтобы извлечь связанный аккаунт -
select replace(''''+LinkedAccount+'''',',',''',''') from IDCOPES..T_CDI_WHT_DGT where ISNULL(LinkedAccount,'')<>''
Это дает мне «8102651144», «8005370302».
а потом я написал -
IF EXISTS (SELECT 1 from IDCOPES..T_CDI_WHT_DGT where DGTID=1 and DGTSTATUS='C')
UPDATE IDCOPES..T_CDI_WHT_DGT
SET DGTSTATUS='C'
Where SKACC in (select replace(''''+LinkedAccount+'''',',',''',''') from IDCOPES..T_CDI_WHT_DGT where ISNULL(LinkedAccount,'')<>'' and DGTID=1)
Но это не работает.
Тем не менее, когда я пишу
IF EXISTS (SELECT 1 from IDCOPES..T_CDI_WHT_DGT where DGTID=1 and DGTSTATUS='C')
UPDATE IDCOPES..T_CDI_WHT_DGT
SET DGTSTATUS='C'
Where SKACC in ('8102651144','8005370302')
Работает. Я не могу понять, почему это не будет работать, когда оба кода одинаковы.