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
列。