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

时间:2019-02-27 22:27:09

标签: sql tsql

我正在寻找一种创建临时表的解决方案,该表可用于数据加扰。第一列将包含按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个额外的列就可以了。

2 个答案:

答案 0 :(得分:0)

您正在寻找排列。如果数字从1开始且没有间隔,则可以使用@Number

Declare @Number Varchar(20) = '3.24';
Select  Cast(@Number As Decimal(4,2));
Result: 3.24

如果ID不满足此条件,则可以生成随机排列,然后在原始ID中row_number()进行排列。

答案 1 :(得分: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