-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path02-ProductCostPriceHistory-random-generator.sql
66 lines (61 loc) · 2.16 KB
/
02-ProductCostPriceHistory-random-generator.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
IF ( (SELECT OBJECT_ID('[SalesLT].[ProductCostPriceHistory]', 'U')) IS NOT NULL)
BEGIN
DROP TABLE [SalesLT].[ProductCostPriceHistory]
PRINT 'Existing [SalesLT].[ProductCostPriceHistory] table dropped'
END
GO
CREATE TABLE [SalesLT].[ProductCostPriceHistory](
[CostPriceHistoryID] [uniqueidentifier] NOT NULL CONSTRAINT [DF_ProductCostPriceHistory_CostPriceHistoryID] DEFAULT (newid()),
[ProductID] [int] NOT NULL,
[StandardCost] [money] NOT NULL,
[ListPrice] [money] NOT NULL,
[EndDate] [datetime] NULL,
CONSTRAINT [PK_SalesLT.ProductCostPriceHistory] PRIMARY KEY CLUSTERED
(
[CostPriceHistoryID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
PRINT 'New [SalesLT].[ProductCostPriceHistory] table created'
TRUNCATE TABLE SalesLT.ProductCostPriceHistory
GO
INSERT INTO SalesLT.ProductCostPriceHistory
SELECT
NEWID()
,p.ProductID
,StandardCost * randomPercentageIncrease AS oldCost
,ListPrice * randomPercentageIncrease AS oldPrice
,CAST(GETDATE() - daysAgo AS DATE)--1 to 3 days ago
FROM SalesLT.Product p JOIN
(SELECT TOP 100
ProductID
,1 + (CAST(ABS(CHECKSUM(NEWID())) % 5 AS MONEY) + 1)/10 AS randomPercentageIncrease
,1 + ABS(CHECKSUM(NEWID())) % 3 AS daysAgo
FROM SalesLT.Product
ORDER BY NEWID()) rdm ON p.ProductID = rdm.ProductID
UNION
SELECT
NEWID()
,p.ProductID
,StandardCost * randomPercentageIncrease AS oldCost
,ListPrice * randomPercentageIncrease AS oldPrice
,CAST(GETDATE() - daysAgo AS DATE)--4 to 7 days ago
FROM SalesLT.Product p JOIN
(SELECT TOP 100
ProductID
,1 + (CAST(ABS(CHECKSUM(NEWID())) % 5 AS MONEY) + 1)/10 AS randomPercentageIncrease
,4 + ABS(CHECKSUM(NEWID())) % 4 AS daysAgo
FROM SalesLT.Product
ORDER BY NEWID()) rdm ON p.ProductID = rdm.ProductID
GO
INSERT INTO SalesLT.ProductCostPriceHistory
SELECT
NEWID()
,p.ProductID
,p.StandardCost
,p.ListPrice
,NULL --current cost and price
FROM SalesLT.Product p
WHERE ProductID IN (SELECT ProductID FROM SalesLT.ProductCostPriceHistory)
GO
PRINT 'Random rows inserted'