相关疑难解决方法(0)

SQL 查询以给定步骤在范围内获取数字

我有一组这样的数据:

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 循环来实现。请告诉我是否可以使用公共表表达式的选择查询来完成此操作(如果需要)。提前致谢。

t-sql sql-server-2005

3
推荐指数
1
解决办法
2726
查看次数

如何插入多行 - 需要一个循环?

我有以下声明:

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#应用​​程序,它将有一个循环,但我确信这不是最好的方法,并希望在这里学到一些东西,以避免将来这样做(因为我'我确定这种情况很常见).

sql t-sql sql-server sql-server-2008

3
推荐指数
2
解决办法
2万
查看次数

如何在不使用循环的情况下将拆分量插入表中?

我需要将一个数量分成多个部分并插入一个名为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 sql-server

3
推荐指数
1
解决办法
201
查看次数

有一种方法可以使用NEWID函数生成GUID列表吗?

我需要在SQL Server 2008 R2中创建一个GUID列表,我正在使用该NEWID()功能.

这是我正在尝试但我只得到一个ID:

SELECT TOP 100 NEWID() 
Run Code Online (Sandbox Code Playgroud)

我是SQL Server的新手,我不知道是否有办法做到这一点,或者是一种创建循环的方法.

我不需要坚持那些GUID,我只想在屏幕上显示它们.

sql sql-server sql-server-2008-r2

3
推荐指数
1
解决办法
8029
查看次数

创建基于将范围转换为行的sql视图

我有一个像这样结构的表

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)

我对观点不够熟悉所以我需要一些方向.

谢谢

sql t-sql sql-view

2
推荐指数
1
解决办法
896
查看次数

更快的方法在ms sql中输入时间表中的行

我需要填写一个时间表来使用它来加入报告服务中的数据.通常我使用此代码执行此操作:

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-server performance

1
推荐指数
1
解决办法
109
查看次数

如何有效地生成更大的彩票号码集

我是 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)

t-sql

0
推荐指数
1
解决办法
2318
查看次数