Вычесть значения из двух разных таблиц - PullRequest
6 голосов
/ 10 марта 2011

Рассмотрим таблицу X:

A
-
1
2
3
3
6

Рассмотрим таблицу Y:

A
-
0
4
2
1
9

Как написать запрос, который использует разницу между этими двумя таблицами, чтобы вычислить следующую таблицу (скажем, таблицу Z):

A
-
1
-2
1
2
-3

Ответы [ 2 ]

10 голосов
/ 10 марта 2011

Непонятно, что вы хотите. Может ли это быть так?

SELECT  (SELECT SUM(A) FROM X) - 
        (SELECT SUM(A) FROM Y)
        AS MyValue
1 голос
/ 10 марта 2011

Марсело прав на 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

Сначала я бы скрестил пальцы!Если есть какой-то способ, которым вы можете получить правильный ключ на вашем столе, пожалуйста, сделайте это.

Приветствия,

Даниэль

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...