Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как найти отсутствующую пару  [new]
AlexeyGor
Member

Откуда:
Сообщений: 35
Здравствуйте, уважаемые форумчане.

Столкнулся с задачей, которую не смогу решить со своими познаниями. Поиск не помог, т.к. не знаю как правильно сформулировать данную задачу для поиска.

Суть задачи - если таблица, в ней нас интересует два столбца. У каждой строки в таблице должна быть пара.
То, что эти строки - парные, мы узнаем по их ID. Различаться они будут по второму столбцу, назовем его тип

Пример

тип ID

S 111000
B 111000 --- у S есть пара B с тем же ID.

Мне надо найти такие ID, в которых содержаться только один элемент.

S 111001
--- ----- у S нет пары B

Помогите пожалуйста.
28 июл 12, 17:34    [12929659]     Ответить | Цитировать Сообщить модератору
 Re: как найти отсутствующую пару  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
select
  *
from [Пример] a
where
  not exists ( select * from [Пример] x where a.id = x.id and a.Тип != x.Тип )


Сообщение было отредактировано: 28 июл 12, 17:58
28 июл 12, 17:58    [12929681]     Ответить | Цитировать Сообщить модератору
 Re: как найти отсутствующую пару  [new]
aleks2
Guest
select min(тип) тип,  ID
from [Пример] a
group by ID
having COUNT(*) <> 2
28 июл 12, 18:19    [12929705]     Ответить | Цитировать Сообщить модератору
 Re: как найти отсутствующую пару  [new]
AlexeyGor
Member

Откуда:
Сообщений: 35
Спасибо большое! Сейчас попробую
29 июл 12, 13:06    [12930984]     Ответить | Цитировать Сообщить модератору
 Re: как найти отсутствующую пару  [new]
AlexeyGor
Member

Откуда:
Сообщений: 35
Работает!

Друзья, подскажите еще такой момент - как в where подставить множественные значения?

Написал запрос


select   min(TYPE)Type,  ID_DEAL
from [RTS_2011].[dbo].[611]  where action = 'D'
group by ID_DEAL


having COUNT(TYPE) <> 2
order by ID_DEAL


После этого хочу удалить все строки, которые не имели пары.

DELETE FROM [RTS_2011].[dbo].[611] WHERE ID_DEAL = (
тут должны быть все айди которые вычислил прошлый запрос.
)
1 авг 12, 00:31    [12943778]     Ответить | Цитировать Сообщить модератору
 Re: как найти отсутствующую пару  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
AlexeyGor
Друзья, подскажите еще такой момент - как в where подставить множественные значения?
Вы не поверите. Вот так, например: 12929681
1 авг 12, 01:19    [12943838]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить