2013-05-22 129 views
1

我想在我的数据库中创建一些随机数据,正如你可以从下面的代码中看到的,我的订单号工作正常,我的订单日期也是如此,但我不能让我的OrderLineNumber工作,我希望它开始001运行100行,结束于100我认为它是一个简单的答案,但我只是无法弄清楚。创建随机数据

DECLARE @OrderNumber varchar (30) 
DECLARE @OrderDate int 
DECLARE @OrderLineNumber varchar(50) 

SET @OrderNumber = 1 
SET @OrderDate = 0 
SET @OrderLineNumber = 001 

WHILE @OrderNumber <= 100 
WHILE @OrderDate <= 100 
WHILE @OrderLineNumber <= 100 

BEGIN 
INSERT INTO Orders (OrderNumber, OrderDate, OrderLineNumber) 
SELECT 'ORD' + Right ('000000' + CAST (@OrderNumber AS varchar (30)), 6), 
DATEADD (day, CAST (RAND() * 1500 as int), '2008-1-1'), 
(@OrderLineNumber = 0) 

SET @OrderNumber = @OrderNumber + 1 
SET @OrderDate = @OrderDate + 1 
SET @OrderLineNumber = @OrderLineNumber +1 
END 
+0

小幅有关:检查了这一点https://github.com/fzaninotto/Faker。 相关:该程序的当前结果是什么? – jtavares

+0

嘿jtavares,前两列填充第三列不。 – wafw1971

+1

您没有声明第3列'(OrderNumber,OrderDate)' – jtavares

回答

1

尝试这一个 -

DECLARE @OrderNumber VARCHAR(30) 
DECLARE @OrderDate INT 
DECLARE @OrderLineNumber VARCHAR(50) 

SET @OrderNumber=1 
SET @OrderDate=0 
SET @OrderLineNumber=001 

WHILE @OrderNumber<=100 
    WHILE @OrderDate<=100 
     WHILE @OrderLineNumber<=100 

     BEGIN 
      INSERT INTO dbo.Orders (OrderNumber, OrderDate, OrderLineNumber) 
       SELECT 'ORD'+RIGHT('000000'+CAST(@OrderNumber AS VARCHAR(30)),6) 
        , DATEADD(DAY,CAST(RAND()*1500 AS INT),'2008-1-1') 
        , @OrderLineNumber --<-- 

      SELECT @[email protected]+1 
       , @[email protected]+1 
       , @[email protected]+1 
     END 
0

更改声明

SELECT 'ORD' + Right ('000000' + CAST (@OrderNumber AS varchar (30)), 6), 
DATEADD (day, CAST (RAND() * 1500 as int), '2008-1-1'),@OrderLineNumber