Reputation: 361
I am trying to create some random data in my database, as you can see from the code below my Order number works fine and so does my order date but I cant get my OrderLineNumber to work, I want it to start 001 and run for 100 hundred rows and end on 100. I reckon its a simple answer but I just cant figure it out.
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
Upvotes: 1
Views: 118
Reputation: 1
Change statement to
SELECT 'ORD' + Right ('000000' + CAST (@OrderNumber AS varchar (30)), 6),
DATEADD (day, CAST (RAND () * 1500 as int), '2008-1-1'),@OrderLineNumber
Upvotes: 0
Reputation: 121922
Try this one -
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 @OrderNumber=@OrderNumber+1
, @OrderDate=@OrderDate+1
, @OrderLineNumber=@OrderLineNumber+1
END
Upvotes: 1