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