对于某些类型的SQL查询,辅助数字表可能非常有用.它可以创建为具有特定任务所需的行数的表,也可以创建为返回每个查询所需行数的用户定义函数.
创建这样一个函数的最佳方法是什么?
我试图产生8:00 AM至8:00 PM之间的随机时间为每一行是从数据集选择的,但是,我总是得到相同的随机值的每一行 -我想这是不同的每一行.
表模式和数据:
?????????????????????????
? ID ? CREATED_DATE ?
?????????????????????????
? ID/1 ? 26/04/2014 ?
? ID/2 ? 26/04/2014 ?
? ID/3 ? 26/04/2014 ?
? ID/4 ? 26/04/2014 ?
? ID/5 ? 26/04/2014 ?
?????????????????????????
Run Code Online (Sandbox Code Playgroud)
СurrentSQL语句:
SELECT [ID]
, MyFunction.dbo.AddWorkDays(14, [CREATED_DATE]) AS [New Date]
, CONVERT(VARCHAR, DATEADD(MILLISECOND, CAST(43200000 * RAND() AS INT), CONVERT(TIME, '08:00')), 114) AS [New Time]
FROM [RandomTable]
Run Code Online (Sandbox Code Playgroud)
当前结果(列中每行的相同时间[New Time]):
??????????????????????????????????????????
? ID ? …Run Code Online (Sandbox Code Playgroud) 我需要创建一些随机数据,它一直在游泳,直到我记得我的兰德函数在结果中带回0,有没有办法改变100*RAND()不包括0和3*RAND()到不包括0,我需要的是1到100之间(包括100)和另一个随机化数字1和2.
DECLARE @OrderNumber varchar (30)
DECLARE @OrderDate int
DECLARE @OrderLineNumber varchar(50)
DECLARE @CustomerSkey int
DECLARE @ProductSkey int
DECLARE @OrderMethodSkey int
SET @OrderNumber = 1
SET @OrderDate = 0
SET @OrderLineNumber = 1
SET @CustomerSkey = 1
SET @ProductSkey = 1
SET @OrderMethodSkey = 1
WHILE @OrderNumber <= 100
WHILE @OrderDate <= 100
WHILE @OrderLineNumber <= 100
WHILE @CustomerSkey <= 100
WHILE @ProductSkey <= 100
WHILE @OrderMethodSkey <= 100
BEGIN
INSERT INTO Orders
(OrderNumber
, OrderDate
, OrderLineNumber
, CustomerSkey
, …Run Code Online (Sandbox Code Playgroud)