0

次のデータを含む 2 つのビューがあります。

ローバウンドを表示

6
13
19

上りを表示

3
9
14

上記の2つのビューを使用してこの結果を生成したい

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
4

2 に答える 2

2

したがって、view1 の最小数と view2 の最小数を結合する必要があるようです。DBMSがサポートしている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 フィドル

于 2013-02-23T10:47:22.257 に答える
0

ストアド プロシージャが必要な場合は、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
于 2013-02-23T10:42:57.763 に答える