【发布时间】:2011-09-16 04:43:48
【问题描述】:
我想返回一份员工列表、有关他们的各种信息以及一列,其中列出了他们每月分配给他们的前 3 个项目的列表,以逗号分隔的列表形式。我有一个成功返回小时数的 select 语句,但我不确定如何将它嵌入到 select statemnet 中。下面是选择语句。我正在尝试在 SQL Server 中执行此操作。
DECLARE @Projects varchar(max)
SELECT Top(3) @Projects = COALESCE(@Projects+', ' ,'') + ltrim(rtrim(Projects.Title))
FROM EmployeeProjectPlanning INNER JOIN
Projects ON EmployeeProjectPlanning.ProjectID = Projects.ProjectID
WHERE (EmployeeProjectPlanning.EmpID = 1) AND (EmployeeProjectPlanning.MonthID = 9) AND (EmployeeProjectPlanning.Year = 2011)
ORDER BY EmployeeProjectPlanning.Hours DESC
SELECT @Projects
【问题讨论】:
-
拜托,拜托,请告诉我们您使用的是什么 SQL 产品。 MySQL 和 SQLite 会使用 GROUP_CONCAT 来完成此操作,在 SQL Server 中您需要编写一个标量存储过程来完成此操作。
-
从语法判断,是 MS SQL。此外,如果访问权限允许,我发现为此目的创建一个聚合 CLR 函数来模仿 MySQL 的 group_concat 很有用。
标签: sql