我有两张表如下。
'区域'表
| AreaKey | AreaID |
|-----------------|--------------|
| <identity/int> | <varchar> |
''读物'表
| ReadingKey | AreaKey | Reading | ReadingDateTime |
|-----------------|-------------------|-------------|----------------------|
| <identity/int> |<FK:AreaKey-Areas> | <float> | <datetime> |
区域表已经有一些数据,其行ID为1到50。
我想用一些示例数据填充Readings表 - (在1.0和100.0之间的'Reading'列的随机浮点值和给定DateTime范围之间的ReadingDateTime的随机日期时间值;例如在当前日期时间和日期时间之间3几个月后)。应通过随机选择区域表中已存在的AreaKeys将这些值插入到阅读表中。
换句话说,我想将随机读取值插入随机选择的区域,并随机显示日期时间。
任何人都可以告诉我如何做到这一点吗?
答案 0 :(得分:2)
你看过RedGate's SQL Data Generator了吗? RedGate工具对我们公司来说是一件好事。
除了工具建议,只需编写一个快速的应用程序:
答案 1 :(得分:2)
假设您的Regions表有50条记录,行ID为1-50,我只会考虑使用RAND
函数。
这样的事似乎有效:
SELECT ROUND(((50 - 1 -1) * RAND() + 1), 0) as AreakKey,
ROUND(((100 - 1 -1) * RAND() + 1), 1) as Reading,
DATEADD(mm,-3,GETDATE()) +
(
ABS(
CAST(
CAST( NewID() AS BINARY(8) ) AS INT
)
)
%
CAST(
(GETDATE() - DATEADD(mm,-3,GETDATE())) AS INT
)
) as ReadingDateTime
这里有一些SQL Fiddle。
祝你好运。答案 2 :(得分:1)
您可以使用NEWID()并将结果选择到临时表中。请检查http://msdn.microsoft.com/en-us/library/ms190348.aspx
Select column into #temp from table
order by NEWID()