У меня есть таблица, как показано ниже в SQL Server 2008.Обновление на основе условий в SQL Server с помощью автообъединение
ID| ParentID| InvID |IsIntTr| IsTR
1 | NULL | 1 | NULL | NULL
2 | 1 | 2 | NULL | NULL
3 | 1 | 1 | NULL | NULL
Мое требование:
Если ParentID населен Сравнить Invid родителя к Invid ребенка , Если они заполнены и они имеют одинаковое значение, тогда установите IsIntTr = 1 и IsTr = 0. В противном случае, установите IsIntTr = NULL и Истр = 1
Else (т.е. ParentID равна нулю)
Set IsIntTr = NULL и Истр = NULL
Я написал запрос на обновление следующих SQL, однако, он делает не работает должным образом:
UPDATE child SET
IsIntTr =
CASE WHEN child.ParentID IS NULL THEN NULL
WHEN child.InvID = parent.InvID AND child.ParentID IS NOT NULL
THEN 1 ELSE NULL END,
IsTr =
CASE WHEN child.ParentID IS NULL THEN NULL
WHEN child.InvID = parent.InvID AND child.ParentID IS NOT NULL
THEN 0 ELSE 1 END
from MyTable child (NOLOCK),
MyTable parent (NOLOCK)
Любая помощь очень ценится!
Благодаря
Высказывание _it не работает должным образом. В каком случае вы имеете в виду? – TarasB
, как указано Taras, поскольку предложение where отсутствует, оно только обновило строки, где ID = ParentID – AppDev