在我正在创建的表格中排序输出

时间:2016-01-05 08:28:19

标签: sql tsql sql-server-2012

我需要对数据子集应用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)}

然而,当我检查分割的结果时,它没有正确地分割记录 - 通常在至少一个列表上有几条记录。当我调查这个时,我注意到它创建的表实际上并不是我指示的顺序。

我相信有一种更容易(也就更聪明)的方法可以解决这个问题。感谢任何帮助。

由于

1 个答案:

答案 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

%是模函数