我有两个视图,其中包含以下数据:
查看下限
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
发布于 2013-02-23 18:47:22
因此,看起来您需要将view1中的最低数字与view2中的最低数字连接起来,以此类推。如果您的数据库管理系统支持ROW_NUMBER
,则可以使用类似于
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
SQL Fiddle
发布于 2013-02-23 18:42:58
如果您需要一个存储过程,那么我将使用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
https://stackoverflow.com/questions/15039576
复制相似问题