从两个不同的表中减去值

时间:2011-03-10 02:41:48

标签: sql postgresql

考虑表X:

A
-
1
2
3
3
6

考虑表Y:

A
-
0
4
2
1
9

如何编写一个获取这两个表之间差异的查询来计算下表(比如表Z):

A
-
1
-2
1
2
-3

2 个答案:

答案 0 :(得分:10)

目前尚不清楚你想要什么。可能是这个吗?

SELECT  (SELECT SUM(A) FROM X) - 
        (SELECT SUM(A) FROM Y)
        AS MyValue

答案 1 :(得分:1)

Marcelo 100%正确 - 在真正的关系数据库中,结果集的顺序永远不会得到保证。也就是说,有些数据库总是按顺序返回集合。

所以,如果你愿意冒险,这是一个解决方案。用这样的自动增量键创建两个表:

CREATE TABLE Sets (
  id integer identity(1,1)
, val decimal
) 

CREATE TABLE SetY (
  id integer identity(1,1)
, val decimal
) 

然后用X和Y值填充它们:

INSERT INTO Sets (val) (SELECT * FROM X)
INSERT INTO SetY (val) (SELECT * FROM Y)

然后你可以这样做来得到答案:

SELECT X.ID, X.Val, Y.Val, X.val-Y.val as Difference
FROM Sets X
LEFT OUTER JOIN SetY Y
  ON Y.id = X.ID

我会先穿过我的手指!如果您有任何方法可以在桌子上找到合适的钥匙,请这样做。

干杯,

丹尼尔