我需要对数据子集应用3路分割测试,我这样做的方法是创建一个' TestTable'
例如
Select Group, List, Urn
into tbl_TestSplit
from tbl_AllRecords
where ApplicableToTest = 'Y'
order by List, Urn
然后我添加一些字段:
alter table tbl_testsplit
add
[ID][int] identity (1,1) not null,
[Split] [nvarchar] (20) null
然后我按如下方式更新分割字段:
update tbl_testsplit set split = {fn MOD(id,3)}
然而,当我检查分割的结果时,它没有正确地分割记录 - 通常在至少一个列表上有几条记录。当我调查这个时,我注意到它创建的表实际上并不是我指示的顺序。
我相信有一种更容易(也就更聪明)的方法可以解决这个问题。感谢任何帮助。
由于
答案 0 :(得分:1)
您可以使用ROW_NUMBER
按照您想要的顺序计算行号
Select Group, List, Urn
, split = (ROW_NUMBER() OVER (ORDER BY List, Urn)) % 3
from tbl_AllRecords
where ApplicableToTest = 'Y'
order by List, Urn
%
是模函数