我有一个包含许多行的结果集,我想编写一个 case 表达式来比较结果中的每一行,而无需对行号进行硬编码。
我的结果中的每一行都是相互连接的。
例子:
1 号码1:2345 号码2:1111
2 1号:3456 2号:2222
3 号码1:4567 号码3:3333
4 1号:5678 4号:4444
想比较第 1 行和第 2 行 /3 和第 4 行等等..
有什么建议吗?我正在使用 SQL Developer 2008。
我有一个包含许多行的结果集,我想编写一个 case 表达式来比较结果中的每一行,而无需对行号进行硬编码。
我的结果中的每一行都是相互连接的。
例子:
1 号码1:2345 号码2:1111
2 1号:3456 2号:2222
3 号码1:4567 号码3:3333
4 1号:5678 4号:4444
想比较第 1 行和第 2 行 /3 和第 4 行等等..
有什么建议吗?我正在使用 SQL Developer 2008。
将相同的数据插入两个不同的#table,并使用如下的while循环进行比较,
DECLARE @min INT =1,
@max INT ,@Table1_number1 INT,@Table1_number2 INT,@Table2_number1 INT,@Table2_number2 INT
CREATE TABLE #Table1(ID INT IDENTITY(1,1),
number1 INT,number2 INT)
CREATE TABLE #Table2(ID INT IDENTITY(1,1),
number1 INT,number2 INT)
INSERT INTO #Table1(number1,
number2)
VALUES(1,
1), (1,
1), (2,
2)
INSERT INTO #Table2(number1,
number2)
VALUES(1,
1), (1,
1), (2,
2)
SELECT @max=
(SELECT count(1)
FROM #Table1) WHILE(@min<=@max) BEGIN
SELECT @Table1_number1=number1,
@Table1_number2=number2
FROM #Table1
WHERE ID=@min IF(@min=@max) BEGIN
SELECT @Table2_number1=number1,
@Table2_number2=number2
FROM #Table2
WHERE ID=1 END ELSE BEGIN
SELECT @Table2_number1=number1,
@Table2_number2=number2
FROM #Table2
WHERE ID=@min+1 END
IF(@Table1_number1=@Table2_number1
AND @Table1_number2=@Table2_number2) BEGIN PRINT 'do something' END ELSE BEGIN PRINT '-- do something else' END
SET @min=@min+1 END
DROP TABLE #Table1
DROP TABLE #Table2