У меня есть таблица SQL Server 2008 с записями в нескольких группах, состоящих из идентификаторов составных групп (т. е. GroupID = Col1 + Col2 + Col3), и мне нужно случайным образом разделить каждую из этих групп на контрольные группы, переназначив значение только для Col1, так что половина каждой группы останется в исходной группе, а половина будет помещена в новую группу. Как я могу сделать это в одном выражении, чтобы мне не приходилось вручную просматривать каждую группу Col2+Col3?
Другими словами, я хотел бы сделать что-то вроде этого:
UPDATE dbo.DM_Main
SET PkgPt1 = 'CD2'
WHERE ID IN (
SELECT TOP 50 PERCENT ID
FROM dbo.DM_Main
WHERE PkgPt1 = 'CD1'
GROUP BY PkgPt2, PkgPt3 -- obviously this line won't work
ORDER BY NEWID()
)