首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >逐行减法

逐行减法
EN

Stack Overflow用户
提问于 2013-02-23 18:40:06
回答 2查看 111关注 0票数 0

我有两个视图,其中包含以下数据:

查看下限

代码语言:javascript
运行
复制
6
13
19

查看上行

代码语言:javascript
运行
复制
3
9
14

我想使用上面的两个视图来生成这个结果

代码语言:javascript
运行
复制
3
4
5

即6-3= 3,13 -9 =4和19-14 =15。

我试过了

代码语言:javascript
运行
复制
 Select l.val - u.val from lowbound l, upbound u;

但下面是它的结果

代码语言:javascript
运行
复制
3
10
16
-3
4
10
-8
-1
5
EN

回答 2

Stack Overflow用户

发布于 2013-02-23 18:47:22

因此,看起来您需要将view1中的最低数字与view2中的最低数字连接起来,以此类推。如果您的数据库管理系统支持ROW_NUMBER,则可以使用类似于

代码语言:javascript
运行
复制
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

票数 2
EN

Stack Overflow用户

发布于 2013-02-23 18:42:58

如果您需要一个存储过程,那么我将使用MSSQL服务器

代码语言:javascript
运行
复制
 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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15039576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档