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

Откуда: СПб
Сообщений: 6
Всем привет!
Помогите с простейшим запросом
Имеется таблица
-------------------------------------------
| ID | SUB | DISCR |
-------------------------------------------
| 1 | a | xxxx |
-------------------------------------------
| 1 | b | yyyy |
-------------------------------------------
| 1 | c | zzzz |
-------------------------------------------
| 2 | a | xyxy |
-------------------------------------------
| 3 | c | xzyz |
-------------------------------------------
| 3 | b | xxzz |
-------------------------------------------
| 4 | a | zyzy |
-------------------------------------------
| 4 | b | zxyz |
-------------------------------------------

Нужно выбрать записи ID, которым соответствуют одновременно две записи 'a' и 'b' SUB
Что-то типа
SELECT ID,SUB
FROM Table
(SELECT ID,SUB
FROM Table
WHERE SUB='a')
WHERE SUB='b'

т.е. на выходе

-------------------------------------------
| ID | SUB | DISCR |
-------------------------------------------
| 1 | a | xxxx |
-------------------------------------------
| 1 | b | yyyy |
-------------------------------------------
| 4 | a | zyzy |
-------------------------------------------
| 4 | b | zxyz |
-------------------------------------------


А отображение желательно сделать по записи 'b'

-------------------------------------------
| ID | SUB | DISCR |
-------------------------------------------
| 1 | b | yyyy |
-------------------------------------------
| 4 | b | zxyz |
-------------------------------------------
21 ноя 12, 18:05    [13509611]     Ответить | Цитировать Сообщить модератору
 Re: выборка по двум значениям  [new]
invm
Member

Откуда: Москва
Сообщений: 9397
select
 t.*
from
 Таблица t
where
 t.SUB = 'b' and
 exists(select * from Таблица where ID = t.ID and SUB = 'a');
21 ноя 12, 18:19    [13509657]     Ответить | Цитировать Сообщить модератору
 Re: выборка по двум значениям  [new]
invm
Member

Откуда: Москва
Сообщений: 9397
Ну и еще вариант
with cte as
(
 select
  ID, SUB, DISCR,
  row_number() over (partition by ID order by SUB) as rn
 from
  Таблица
 where
  SUB in ('a', 'b')
)
select
 ID, SUB, DISCR
from
 cte
where
 rn = 2;
21 ноя 12, 18:24    [13509680]     Ответить | Цитировать Сообщить модератору
 Re: выборка по двум значениям  [new]
iap
Member

Откуда: Москва
Сообщений: 46999
Zlodey_gtn,

работаете что ли вместе: https://www.sql.ru/forum/actualthread.aspx?tid=984935 ?
Или одни и те же упражнения делаете?
21 ноя 12, 21:10    [13510162]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить