SQL-сервер: сравнение строк - PullRequest
0 голосов
/ 21 июля 2009

Мне нужен запрос, который может выполнить следующую операцию. У меня есть таблица с 2 столбцами

ID Values
 1  1
 1  2
 1  3
 1  4
 2  2
 2  5
 2  6

если вы видите для ID 1, у меня есть 1,2,3 и 4 в качестве значений, а для ID 2 у меня есть 2, 5 и 6.

Я хочу написать запрос, который возвращает следующее

1 (-) 4 (-) 5 (+) 6 (+)

означает, что 1 и 4 удалены, а 5 и 6 добавлены путем сравнения двух идентификаторов.

Возможно ли это? Пожалуйста, дайте мне знать

Спасибо

Ответы [ 2 ]

0 голосов
/ 21 июля 2009

Это даст вам 1 и 4:

select a.values
from my_table a
where not exists (
select * from my_table b where b.values = a.values and b.ID = 2)
and a.ID = 1

и это даст вам 5 & 6:

select a.values
from my_table a
where not exists (
select * from my_table b where b.values = a.values and b.ID = 1)
and a.ID = 2
0 голосов
/ 21 июля 2009

Что-то вроде:

(
SELECT T.Value FROM dbo.Table T WHERE T.ID = 1
EXCEPT
SELECT T.Value FROM dbo.Table T WHERE T.ID = 2
)
UNION
(
SELECT T.Value FROM dbo.Table T WHERE T.ID = 2
EXCEPT
SELECT T.Value FROM dbo.Table T WHERE T.ID = 1
)

Это даст вам список значений, которые связаны с 1, но не с 2, а с 2, но не с 1. Вы можете легко умножить значения из одного из этих подзапросов на -1, чтобы дифференцировать их, или запустить их как два отдельных запросы.

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