是否存在类似于UNION的运算符,它允许从另一个查询的结果集中减去一个查询的结果集?
例如:
UNION的结果
2 3 2 6 1 2 6 3 7
1 3 5 2 7 8 4 3 2
潜在减法运算符的结果
1 0 -3 4 -6 -6 2 0 5
答案 0 :(得分:0)
你的情况要简单得多:只从另一个
中减去一列CREATE TABLE #A
(
col1 INT NOT NULL
,col2 INT NOT NULL
);
INSERT INTO #A (col1,col2)
VALUES
(2,1)
,(3,3)
,(2,5)
,(6,2)
,(1,7)
,(2,8)
,(6,4)
,(3,3)
,(7,2)
SELECT (col1 - col2) AS result
FROM #A;
DROP TABLE #A;
原始回答
因此,如果我理解正确,你需要减去两个一维矩阵。 Sql Server
并不是真正做这种数学运算的最佳工具,但这里是一个如何实现目标的例子。这个想法很简单:引入索引(i,j)并通过它们连接(你可以跳过j,因为矩阵是一维的,这个例子适用于二维数组):
CREATE TABLE #A
(
element_value INT NOT NULL
,i INT NOT NULL
,j INT NOT NULL
,PRIMARY KEY (i, j)
);
CREATE TABLE #B
(
element_value INT NOT NULL
,i INT NOT NULL
,j INT NOT NULL
,PRIMARY KEY (i, j)
);
INSERT INTO #A (element_value,i,j)
VALUES
(2,1,1)
,(3,1,2)
,(2,1,3)
,(6,1,4)
,(1,1,5)
,(2,1,6)
,(6,1,7)
,(3,1,8)
,(7,1,9)
INSERT INTO #B (element_value,i,j)
VALUES
(1,1,1)
,(3,1,2)
,(5,1,3)
,(2,1,4)
,(7,1,5)
,(8,1,6)
,(4,1,7)
,(3,1,8)
,(2,1,9)
SELECT (A.element_value - B.element_value) AS result
FROM #A AS A,#B AS B
WHERE A.i = B.i
AND A.j = B.j;
DROP TABLE #A;
DROP TABLE #B;