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

Откуда:
Сообщений: 168
Есть таблица
with TEST AS(
select 1 AS [Отдел],	'Ваня' AS [Имя] union all
select 1,		'Таня'		  union all
select 1,		'Света'		  union all
select 1,		'Катя'		  union all
select 2,		'Ваня'		  union all
select 2,		'Таня'		  union all
select 2,		'Марина'	  union all		
select 3,		'Таня' 	          union all
select 3,		'Катя'		  union all
select 3,		'Петя'		  union all
)


надо вывести тот Отдел , у которого в поле "ИМЯ" есть имена 'Ваня' и 'Таня'
данные надо вывести в виде

Отдел Имя
1 Ваня;Таня;Света;Катя
2 Ваня;Таня;Марина


не знаю как добавить условие where в
select [Отдел]
       ,replace((select [Имя]   as 'data()' from TEST where [Отдел] = t.[Отдел] for xml path('')), ' ', ',')
 
from TEST t
group by [Отдел]
2 июн 14, 12:11    [16105233]     Ответить | Цитировать Сообщить модератору
 Re: Условие WHERE  [new]
bodzin
Member

Откуда:
Сообщений: 10
Len4ick, http://msdn.microsoft.com/ru-ru/library/ms188047.aspx
2 июн 14, 12:13    [16105258]     Ответить | Цитировать Сообщить модератору
 Re: Условие WHERE  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Хоть закрывай форум на время сдачи сессий.
3 июн 14, 01:32    [16109980]     Ответить | Цитировать Сообщить модератору
 Re: Условие WHERE  [new]
west74
Member

Откуда: Челябинск
Сообщений: 76
относись к этому как к помощи братьям нашим младшим :)



with TEST AS (
select 1 AS [Отдел], 'Ваня' AS [Имя] union all
select 1, 'Таня' union all
select 1, 'Света' union all
select 1, 'Катя' union all
select 2, 'Ваня' union all
select 2, 'Таня' union all
select 2, 'Марина' union all
select 3, 'Таня' union all
select 3, 'Катя' union all
select 3, 'Петя'
),
Test1 as (
Select * from test where [Отдел] in
(Select [Отдел] from test
group by [Отдел]
having sum(case
when [Имя]='Ваня' then 1
when [Имя]='Таня' then 1
else 0
end)=2))

select [Отдел]
,replace((select [Имя] as 'data()' from TEST1 where [Отдел] = t.[Отдел] order by [Имя] for xml path('')), ' ', ',') aa

from TEST1 t
group by [Отдел]
3 июн 14, 07:09    [16110147]     Ответить | Цитировать Сообщить модератору
 Re: Условие WHERE  [new]
aleks2
Guest
west74
относись к этому как к помощи братьям нашим младшим :)


Садись. Неуд.


with TEST AS (
select 1 AS [Отдел], 'Ваня' AS [Имя] union all
select 1, 'Таня' union all
select 1, 'Света' union all
select 1, 'Катя' union all
select 2, 'Ваня' union all
select 2, 'Таня' union all
select 2, 'Марина' union all 
select 3, 'Таня' union all
select 3, 'Катя' union all
select 3, 'Петя' 
),
Test1 as ( select distinct [Отдел] from test t 
             where exists( select * from test where [Отдел] = t.[Отдел] and [Имя] = 'Ваня' )
               and exists( select * from test where [Отдел] = t.[Отдел] and [Имя] = 'Таня' )
          )

select [Отдел], substring((select ', ' + [Имя] from TEST where [Отдел] = t.[Отдел] order by [Имя] for xml path('')), 3, 8000 ) [Имя]
  from TEST1 t
3 июн 14, 07:48    [16110175]     Ответить | Цитировать Сообщить модератору
 Re: Условие WHERE  [new]
west74
Member

Откуда: Челябинск
Сообщений: 76
aleks2
Садись. Неуд.


Ничего пристрастие к вложенным запросам проходит с годами, и у Вас пройдет :)
3 июн 14, 09:09    [16110279]     Ответить | Цитировать Сообщить модератору
 Re: Условие WHERE  [new]
baracs
Member

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

Не проходит. А точно должно?
3 июн 14, 09:40    [16110381]     Ответить | Цитировать Сообщить модератору
 Re: Условие WHERE  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
west74
aleks2
Садись. Неуд.


Ничего пристрастие к вложенным запросам проходит с годами, и у Вас пройдет :)
Проверьте, что будет с вашим запросом, если в отделе несколько тесок, например два Вани и ни одной Тани, или два Вани и Таня.
3 июн 14, 09:42    [16110394]     Ответить | Цитировать Сообщить модератору
 Re: Условие WHERE  [new]
west74
Member

Откуда: Челябинск
Сообщений: 76
справедливо, но лечится ;)

with TEST AS (
select 1 AS [Отдел],	'Ваня' AS [Имя] union all
select 1,		'Таня'		  union all
select 1,		'Света'		  union all
select 1,		'Катя'		  union all
select 2,		'Ваня'		  union all
select 2,		'Таня'		  union all
select 2,		'Марина'	  union all		
select 3,		'Таня' 	          union all
select 3,		'Таня' 	          union all
select 3,		'Катя'		  union all
select 3,		'Петя'		 
),
Test1 as (
Select * from test  where [Отдел] in 
(Select [Отдел] from (select distinct [Отдел],[Имя] from test) A
 group by [Отдел]                                
 having sum(case 
               when [Имя]='Ваня' then 1
               when [Имя]='Таня' then 1
               else 0
               end)=2))

select [Отдел]
       ,replace((select [Имя]   as 'data()' from TEST1 where [Отдел] = t.[Отдел] order by [Имя] for xml path('')), ' ', ',') aa
 
from TEST1 t
group by [Отдел]


Сообщение было отредактировано: 4 июн 14, 14:47
4 июн 14, 14:45    [16119408]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить