带有随机NEWID列T-SQL的临时表

问题描述 投票:0回答:2

我正在寻找一种解决方案来创建一个临时表,我们可以用它来进行数据加扰。第一列将包含id desc的用户id顺序,每个附加列将是NEWID()排序的第一列中的值。这是一个例子:

| ID    | RandomID1     | RandomID2     | RandomID3     |
|:--:   |:---------:    |:---------:    |:---------:    |
|  12   |     25        |     50        |     48        |
|  25   |     48        |     12        |     36        |
|  36   |     36        |     36        |     12        |
|  48   |     50        |     48        |     50        |
|  50   |     12        |     25        |     25        |

我目前的工作是一次手动创建这一列并粘贴到.csv然后将其导入临时表。

如果为额外随机列的数量提供值会很好,但如果没有,则固定数量的3个额外列将没有问题。

sql tsql
2个回答
0
投票

你正在寻找排列。如果数字从1开始并且没有间隙,你可以使用row_number()

select id,
       row_number() over (order by newid()) as randomid1,
       row_number() over (order by newid()) as randomid2,
       row_number() over (order by newid()) as randomid3
from t;

如果id不符合这个条件,你可以生成随机排列,然后在原始id中生成排列的join


0
投票

我用来生成一个随机数是在这里,这是1到100.使用newid()

select 1+abs(checksum(newid()))%100 -- returns a number under 100 starting at 1, if the 1 becomes 50 then a number between 50 and 150
© www.soinside.com 2019 - 2024. All rights reserved.