我有一组这样的数据:
MinNo: 2500
MaxNo: 2700
IncrementStep: 10
Run Code Online (Sandbox Code Playgroud)
在最小数和最大数之间,将列出具有给定步骤的所有可能数字,如下所示:
2500
2510
2520
2530
2540
2550
2560
2570
2580
2590
2600
2610
2620
2630
2640
2650
2660
2670
2680
2690
2700
Run Code Online (Sandbox Code Playgroud)
我知道这可以使用 while 循环来实现。请告诉我是否可以使用公共表表达式的选择查询来完成此操作(如果需要)。提前致谢。
我有以下声明:
insert into forecast_entry.user_role_xref
( user_master_id ,
role_id ,
created_date ,
created_by
)
values
( 276 , -- user_master_id - int
101 , -- role_id - int
getdate() , -- created_date - datetime
'MICHAELSK' -- created_by - varchar(20)
)
Run Code Online (Sandbox Code Playgroud)
我需要为role_id 101-355生成一行(所以上面的语句相同,除了使用role_id递增重复).最好的方法是什么?为了完成工作,我打算编写一个快速的C#应用程序,它将有一个循环,但我确信这不是最好的方法,并希望在这里学到一些东西,以避免将来这样做(因为我'我确定这种情况很常见).
我需要将一个数量分成多个部分并插入一个名为installment的表中,如何在不使用循环的情况下实现它?
declare @installment as table (installment_index int identity(1,1),
amount money,
due_date datetime)
declare @total_amount money
declare @number_of_installment int
declare @amount money
declare @i int
declare @date datetime
set @date = getdate()
set @number_of_installment = 20
set @total_amount = 5001.00
set @amount = @total_amount / @number_of_installment
set @i= 1
while @i <= @number_of_installment
begin
insert into @installment
(amount,due_date) values (@amount, dateadd(month,@i,@date))
set @i = @i + 1
end
Run Code Online (Sandbox Code Playgroud)
我需要在SQL Server 2008 R2中创建一个GUID列表,我正在使用该NEWID()功能.
这是我正在尝试但我只得到一个ID:
SELECT TOP 100 NEWID()
Run Code Online (Sandbox Code Playgroud)
我是SQL Server的新手,我不知道是否有办法做到这一点,或者是一种创建循环的方法.
我不需要坚持那些GUID,我只想在屏幕上显示它们.
我有一个像这样结构的表
ColA|ColB|LowRange|HighRange
----------------------------
1 A 1 5
Run Code Online (Sandbox Code Playgroud)
我想创建一个视图,使数据以下列格式可用
ColA|ColB|RangeNumber
----------------------
1 A 1
1 A 2
1 A 3
1 A 4
1 A 5
Run Code Online (Sandbox Code Playgroud)
我对观点不够熟悉所以我需要一些方向.
谢谢
我需要填写一个时间表来使用它来加入报告服务中的数据.通常我使用此代码执行此操作:
TRUNCATE TABLE tqTimeTable
DECLARE @CNT int
DECLARE @DATE datetime
DECLARE @END int
SET @CNT = 1
SET @DATE = 25567 -- 01.01.1970
SET @END = 20000 -- + 20k days => years 2024
WHILE(@CNT < @END)
BEGIN
INSERT INTO tqTimeTable (Tag, Monat, Jahr)
VALUES (DATEADD(day,@CNT,@DATE), MONTH(DATEADD(day,@CNT,@DATE)), YEAR(DATEADD(day,@CNT,@DATE)))
SET @CNT = @CNT + 1
END;
Run Code Online (Sandbox Code Playgroud)
但这需要一段时间(在我的测试系统大约2分钟),所以我希望有人有同样的问题,并解决它比我更好.当我从.NET连接中激活此语句时,我需要一个更快的解决方案,或者如果没有一个提高我的连接超时.
我是 SQL 的初学者,我一直在寻找更多的 SQL 经验,因此我决定设计一个过程来生成 X 数量的随机乐透选择。我所在地区的彩票允许您从 1-47 中选择 5 个号码,以及从 1-27 中选择 1 个“超级”号码。诀窍是“mega”数字可以与之前的 5 个数字重复,即 1、2、3、4、5、mega 1。
我创建了以下过程来生成 1000 万个彩票选秀权,该过程花了 12 小时 57 分钟才能完成。而我的朋友用 java 测试了同样的事情,只花了几秒钟。我想知道我是否可以对代码进行任何改进,或者我是否犯了任何错误?我对此很陌生,因此我正在努力学习更好的方法等,欢迎所有评论。
USE lotto
DECLARE
@counter INT,
@counter1 INT,
@pm SMALLINT,
@i1 SMALLINT,
@i2 SMALLINT,
@i3 SMALLINT,
@i4 SMALLINT,
@i5 SMALLINT,
@sort int
SET @counter1=0
TRUNCATE TABLE picks
WHILE @counter1<10000000
BEGIN
TRUNCATE TABLE sort
SET @counter = 1
WHILE @counter < 6
BEGIN
INSERT INTO sort (pick)
SELECT CAST(((47+ 1) - 0) * RAND() …Run Code Online (Sandbox Code Playgroud)