Sql 逐行减法
我有两个视图,其中包含以下数据: 视图下限Sql 逐行减法,sql,Sql,我有两个视图,其中包含以下数据: 视图下限 6 13 19 向上看 3 9 14 我想使用上面的两个视图生成这个结果 3 4 5 也就是6-3=3,13-9=4和19-14=15 我试过了 Select l.val - u.val from lowbound l, upbound u; 但结果是这样的 3 10 16 -3 4 10 -8 -1 5 你需要一个存储过程,然后我使用MSSQL服务器 BEGIN DECLARE lcursor CURSOR FOR SELECT *
6
13
19
向上看
3
9
14
我想使用上面的两个视图生成这个结果
3
4
5
也就是6-3=3,13-9=4和19-14=15
我试过了
Select l.val - u.val from lowbound l, upbound u;
但结果是这样的
3
10
16
-3
4
10
-8
-1
5
你需要一个存储过程,然后我使用MSSQL服务器
BEGIN
DECLARE lcursor CURSOR
FOR SELECT * FROM l;
DECLARE ucursor CURSOR
FOR SELECT * FROM u;
DECLARE @l INT;
DECLARE @u INT;
FETCH NEXT FROM lcursor
INTO @l
FETCH NEXT FROM ucursor
INTO @u
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @l - @u
FETCH NEXT FROM lcursor
INTO @l
FETCH NEXT FROM ucursor
INTO @u
END
CLOSE lcursor
DEALLOCATE lcursor
CLOSE ucursor
DEALLOCATE ucursor
END
因此,看起来您需要将view1中最低的数字与view2中最低的数字连接起来,以此类推。如果您的DBMS支持
行号
,您可以使用类似
WITH T1
AS (SELECT V1.val,
ROW_NUMBER() OVER (ORDER BY val) AS RN
FROM View1 V1),
T2
AS (SELECT V2.val,
ROW_NUMBER() OVER (ORDER BY val) AS RN
FROM View2 V2)
SELECT T1.val - T2.val
FROM T1
JOIN T2
ON T1.RN = T2.RN
您使用的是什么RDBMS?如何判断第一个表中的哪一行与另一个表中的哪一行相对应?您提到了视图。这些视图是否可以来自公共表?如果有,请使用父表,您可以直接减去值,而无需联接。没有指定
id
列。