Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Подскажите как переписать запрос select Docid, inic from Visas group by docid,inic  [new]
МИхаил__________________
Member

Откуда:
Сообщений: 573
Подскажите как переписать запрос
select Docid, inic from Visas group by docid,inic
having
count( case when (inic != 5251 and inic != 28) OR (inic IS NULL) then 1 end ) = 0
order by Docid, inic

чтобы он отбирал только строки с одиноковым Docid в которых есть и 5251 и 28

например

Docid inic
11111 5251
11111 28

отобрать только такие строки????
2 ноя 09, 16:04    [7872063]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как переписать запрос select Docid, inic from Visas group by docid,inic  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31170
МИхаил__________________
Подскажите как переписать запрос
select Docid, inic from Visas group by docid,inic
having
count( case when (inic != 5251 and inic != 28) OR (inic IS NULL) then 1 end ) = 0
order by Docid, inic

чтобы он отбирал только строки с одиноковым Docid в которых есть и 5251 и 28

например

Docid inic
11111 5251
11111 28

отобрать только такие строки????
Группировка то тут зачем???

select Docid, inic 
from Visas
where inic in (5251, 28)
2 ноя 09, 16:11    [7872127]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как переписать запрос select Docid, inic from Visas group by docid,inic  [new]
МИхаил__________________
Member

Откуда:
Сообщений: 573
отбирать только те в которых есть и 28 и 5251
2 ноя 09, 16:15    [7872161]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как переписать запрос select Docid, inic from Visas group by docid,inic  [new]
МИхаил__________________
Member

Откуда:
Сообщений: 573
если только 28 или только 5215 то не отбирать
2 ноя 09, 16:16    [7872171]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как переписать запрос select Docid, inic from Visas group by docid,inic  [new]
Glory
Member

Откуда:
Сообщений: 104760
МИхаил__________________
если только 28 или только 5215 то не отбирать

А если и 28 и 5215 и еще что-нибудь ?
2 ноя 09, 16:18    [7872187]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как переписать запрос select Docid, inic from Visas group by docid,inic  [new]
МИхаил__________________
Member

Откуда:
Сообщений: 573
Docid inic
11111 5251
11111 28
только 5251 и 28
2 ноя 09, 16:19    [7872192]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как переписать запрос select Docid, inic from Visas group by docid,inic  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31170
МИхаил__________________
отбирать только те в которых есть и 28 и 5251
select distinct v1.Docid
from Visas v1
	join Visas v2
		on v2.inic = 28
		and v2.Docid = v1.Docid
where v1.inic = 5251
2 ноя 09, 16:19    [7872202]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как переписать запрос select Docid, inic from Visas group by docid,inic  [new]
МИхаил__________________
Member

Откуда:
Сообщений: 573
вот если бы так можно было написать
select Docid, inic
from Visas
where (5251, 28) in inic
order by Docid
2 ноя 09, 16:20    [7872215]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как переписать запрос select Docid, inic from Visas group by docid,inic  [new]
МИхаил__________________
Member

Откуда:
Сообщений: 573
alexeyvg
МИхаил__________________
отбирать только те в которых есть и 28 и 5251
select distinct v1.Docid
from Visas v1
	join Visas v2
		on v2.inic = 28
		and v2.Docid = v1.Docid
where v1.inic = 5251



спасибо
2 ноя 09, 16:31    [7872324]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как переписать запрос select Docid, inic from Visas group by docid,inic  [new]
Glory
Member

Откуда:
Сообщений: 104760
select Docid
from Visas group by docid
having
sum( case when inic in(5251, 28) then 1 else 0 end ) = 2
order by Docid
2 ноя 09, 16:34    [7872348]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить