2013-01-23 148 views
3

我有兩個表格,如下所示。用隨機數據填充表格


'領域' 表

| AreaKey  | AreaID | 
|-----------------|--------------| 
| <identity/int> | <varchar> | 


'閱讀' 表

| ReadingKey |  AreaKey  | Reading | ReadingDateTime | 
|-----------------|-------------------|-------------|----------------------| 
| <identity/int> |<FK:AreaKey-Areas> | <float> |  <datetime>  | 


  • 'AreaKey' 在讀表的外鍵的 'AreaKey'地區表。

區表已經有行ID的範圍從1到50

一些數據,我想填充一些示例數據的讀數表 - 1.0和100.0之間的「閱讀」列(隨機浮點值以及給定DateTime範圍之間的ReadingDateTime的隨機日期時間值;例如,當前日期時間與3個月前的日期時間之間)。這些值應該被隨機插入到Reading表中選擇Areas表中已經存在的AreaKeys。


換句話說,我想隨機讀取值隨機選擇的區域,隨機的日期時間。

任何人都可以給我一個線索如何做到這一點?

回答

2

假設您的Areas表格有50個記錄,並且行ID爲1-50,那麼w只要看看使用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

祝你好運。

+0

完全按照我的需要工作。爲我節省了很多時間。非常感謝。 – CRoshanLG

+0

原諒我的知識,插入語句在哪裏? – niceman

2

你已經採取了看看RedGate's SQL Data Generator? RedGate工具一直是我們公司的福音。

工具建議不談,只寫了一個快速的應用程序:

  1. 生成密鑰列表爲您的區域表
  2. 插入一些隨機記錄到你的範圍表
  3. 插入一些隨機記錄到您的讀取表格,從您在步驟#1中創建的鍵列表中選取隨機元素
+0

第三方工具不適合我!無論如何感謝您的答覆。 :) – CRoshanLG