Мне нужно «свернуть» значения битов для группы в моей таблице через UPDATE
.Поэтому, если для одной строки в группе установлен бит в значение true, мне нужно установить для других строк в группе значение true.
Например, у меня есть такая таблица:
GroupID | Type | BitA | BitB
------------------------------
1 | Parent | 0 | 0
1 | Child | 1 | 0
2 | Parent | 0 | 0
2 | Child | 1 | 1
2 | Child | 0 | 1
3 | Parent | 0 | 0
3 | Child | 0 | 0
Ожидаемый результат после оператора UPDATE
будет следующим:
GroupID | Type | BitA | BitB
------------------------------
1 | Parent | 1 | 0
1 | Child | 1 | 0
2 | Parent | 1 | 1
2 | Child | 1 | 1
2 | Child | 0 | 1
3 | Parent | 0 | 0
3 | Child | 0 | 0
Поскольку для Group 1 для Child с BitA установлено значение true, для Parent также должно быть установлено значение true.
Единственная вещь, которую я смог найти, - это сначала использовать бит как int, чтобы собрать его в группе, но, похоже, я спускаюсь в кроличью нору .:
SELECT
MAX(CAST(BitA as int)),
MAX(CAST(BitB as int))
FROM MyTable
WHERE Type = 'Child'
GROUP BY GroupID
Есть ли более простой способ сделать это?