小编SQL*_*ing的帖子

根据 ID 将英里数限制为千分之一

我在 sql server 2014 中有一个这样的表:

ID | Start_mile|End_mile  
1  |5.23       |7.464  
2  |2.333      |6.124 
Run Code Online (Sandbox Code Playgroud)

我想要做的是将里程分成每个 ID 的千分之一,如下所示:

ID |start_mile|end_mile  
1  |5.230     |5.231  
1  |5.231     |5.232  
1  |5.232     |5.233  
....  
1  |7.463     |7.464  
...
Run Code Online (Sandbox Code Playgroud)

关于如何去做这件事的任何想法?我试图远离游标,除非这是唯一的方法。

我已经能够将这个查询放在一起,但不确定如何将它与 ID 和英里限制合并,以便它在没有声明的 From 和 To 变量的情况下为整个表运行:

DECLARE @from decimal(15, 3) = 0.980;  
DECLARE @to decimal(15, 3) = 1.024;  

;WITH cte AS  
    (SELECT @from AS Value  
     UNION ALL  
     SELECT CONVERT(decimal(15, 3), Value + 0.001)  
     FROM cte  
     WHERE Value < @to)  
SELECT *  
FROM cte  
option (maxrecursion …
Run Code Online (Sandbox Code Playgroud)

sql-server

5
推荐指数
2
解决办法
375
查看次数

在 SQL Server 中为特殊字段创建范围

我有两列看起来像这样:

Start_Post End_Post
---------- --------
102+20.45 153+19.22 
120+21.25 220+25.30
……

我想对每一列引入一个约束:

  • Start_Pos
    最小范围:100+50.30
    最大范围:150+20.65
  • End_Pos
    最小范围:150+60.30
    最大范围:500+20.75

所有值均以英尺为单位并遵循特殊格式。这是一个建筑惯例,我不是专家,但据我所知,1+00 是 100 英尺。从本质上讲,取上述范围 100+50.30 到 150+20.65 意味着距离为 4970 英尺。我所做的只是删除加号并减去两个数字。希望这是有道理的。

有没有办法在保持格式的同时定义这个约束?

performance sql-server check-constraints query-performance

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

计算列与视图

我正在考虑最好的方法来做到这一点。如果我在 sql server 中有这样的表:
StudentPointsTable
StudentID
TestDate
Points

我还需要为学生计算平均值和标准差。我知道我可以创建一个视图,或者用这些计算列创建一个新表,或者将计算列添加到这个表中。

不确定是否还有其他选择,但在性能方面,最好的方法是什么?

index sql-server view computed-column

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