前一段时间由于项目的需要,受一个同事的启发写一段SQL文,觉的具有一定的代表性,所以把它记下来以供参考.
大意是有一个部门表和一个员工表,现在需要使用一条查询语句将部门信息以及该部门的所有员工列出来,一个部门使用一条记录,员工间使用逗号分隔.这里至所以有这样的要求完全是从项目框架以及数据传递的方便性来考虑.
(deparments)
(employees)
以上两张表是临时找来做测试的,对于数据意义不要追究.deparments表中deptid是部门ID,deptname是部门名称.employees表中mgrid是部门ID,empname是员工名称.结果图忘了抓了.
SELECT
FROM(
OUTER APPLY(
GROUP BY deptname,empname
大概的效果应该是这样的.
deptname|empname
-----------------
Marketing|Steven,Michael
使用的前提是对性能要求不是很高.
该SQL文已经在SQL Server2005上测试过了,2003没有测试(不一定支持).这个SQL文勉强实现了想要的结果,但是写的连我自己都觉的想吐.
仅为需要的朋友题目供一些参考,除了特别需要之外,真的不建议这样写SQL文.