次のデータを含む 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
次のデータを含む 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
したがって、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
ストアド プロシージャが必要な場合は、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