【发布时间】:2019-09-16 13:31:11
【问题描述】:
我有一个具有以下定义的表直径集
table diameterset(
id,
projectid,
diameterid,
depth,
diameter
)
现在我的表有如下数据
Id ProjectID Diameter ID Depth Diameter
1 1 dia1_1_1 1 2
2 1 dia1_1_2 2 4
3 1 dia1_1_3 3 6
4 1 dia1_1_4 4 8
5 1 dia1_2_1 1 6
6 1 dia1_2_2 2 10
7 1 dia1_2_3 3 12
8 1 dia1_2_4 4 30
9 2 dia2_1_1 1 30
10 2 dia2_1_2 2 34
.
.
.
.
.
and so on
我想像下面这样填充另一个表应变集
StrainID :- 将diameterID 与相同的projectID 连接
应变:- 获取项目的直径集并从第二个中删除第一个直径并除以,即 (b-a)/a
ID ProjectID StrainID Depth Strain
1 1 dia1_1_1_dia1_2_1_1 1 2 i.e.(6-2)/2
2 1 dia1_1_2_dia1_2_2_2 2 1.5 i.e.(10-4)/4
3 1 dia1_1_3_dia1_2_3_3 3 2 i.e.(12-6)/6
4 1 dia1_1_4_dia1_2_4_4 4 2.75 i.e.(30-8)/8
我已经设法得到了投影、应变和深度,但不知道如何计算应变列
非常感谢任何帮助。
我试过下面的代码
CREATE PROCEDURE [dbo].[PCalculationStrain]
--paramters neeeded
@projectID nvarchar(50)=null,
@DiameterID1 varchar(255)=null,
@DiameterID2 varchar(255)=null
AS
declare
@DiameterID nvarchar(255)=@DiameterID1 + '|' + @DiameterID2,
@StrainID nvarchar(255),
@cnt int =1,
@angle varchar(10),
@Strain nvarchar(50),
@serachDiameterID1 varchar(255),
@serachDiameterID2 varchar(255),
@selectCnt int,
@count int =0
WHILE @cnt < 9
BEGIN
SET @angle = CONVERT(varchar,@cnt);
set @StrainID = @projectID + '_S_' + @DiameterID + '_' + @angle
--INSERT dbo.DHDStrain(ProjectID,StrainID,AngleNb,StrainName) VALUES(@projectID,@StrainID,@angle,@DiameterID);
INSERT dbo.DHDStrain(ProjectID,StrainID,AngleNb,StrainName) VALUES(@projectID,@StrainID,@angle,@DiameterID);
set @serachDiameterID1 = @ProjectID + '_D_' + @DiameterID1 + '_' + @angle
set @serachDiameterID2 = @ProjectID + '_D_' + @DiameterID2 + '_' + @angle
insert into DHDStrainSet(StrainID,Depth,ProjectID)
SELECT @StrainID,Depth,ProjectID FROM DiameterSet where DiameterID=@serachDiameterID1 and projectID=@projectID
SET @cnt = @cnt + 1;
END
【问题讨论】:
-
请标记您正在使用的数据库。
标签: sql stored-procedures insert