Поиск сотрудников, специфичных для отдела в SQL Server 2000 - PullRequest
1 голос
/ 24 марта 2010

Предположим, у меня есть таблица (tblEmp), структура которой похожа на

Dept     Emp
-----    ------
d1        e1
d1        e2
d1        e3
d2        e4
d2        e5
d3        e6

Если мне нужно вывести вывод как

Dept    DepartmentSpecificEmployees
------      ----------------------------    
  d1         e1,e2,e3
  d2         e4,e5
  d3         e6

Я напишу запрос как

select 
   Dept, 
   stuff((select ',' + Emp  from tblEmp t2 where t1.Dept = t2.Dept for xml path(''),1,1,'')DepartmentSpecificEmployees
from 
   tblEmp t1
group by  
   Dept

Но это будет работать в SQL Server 2005 +.

Как можно добиться того же в SQL Server 2000 без объявления переменных, цикла или курсора?

Если я использую COALESCE в качестве альтернативы, тогда мне нужно использовать переменную, которая победит цель

Пожалуйста, помогите

1 Ответ

2 голосов
/ 24 марта 2010

Вы не можете в SQL Server 2000 без использования скалярной пользовательской функции в SELECT. Этот udf будет иметь локальную переменную (как вы уже упоминали) и объединяет каждую группу

select
    Dept, dbo.MyConcatUDF (Dept)
FROM
    (SELECT DISTINCT Dept FROM tblEmp) t1

Или сделай это в клиенте

...