我有一个 SQL Server 2008 表,其中包含多个组中的记录,这些记录由复合组 ID(即 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()
)