相关疑难解决方法(0)

在Microsoft SQL Server 2005中模拟group_concat MySQL函数?

我正在尝试将基于MySQL的应用程序迁移到Microsoft SQL Server 2005(不是选择,而是生活).

在原始应用程序中,我们几乎完全使用符合ANSI-SQL的语句,但有一个重要的例外 - 我们group_concat经常使用MySQL的函数.

group_concat顺便说一下,这样做:给出一张表,比如说,员工姓名和项目......

SELECT empName, projID FROM project_members;
Run Code Online (Sandbox Code Playgroud)

收益:

ANDY   |  A100
ANDY   |  B391
ANDY   |  X010
TOM    |  A100
TOM    |  A510
Run Code Online (Sandbox Code Playgroud)

...这是你用group_concat得到的:

SELECT 
    empName, group_concat(projID SEPARATOR ' / ') 
FROM 
    project_members 
GROUP BY 
    empName;
Run Code Online (Sandbox Code Playgroud)

收益:

ANDY   |  A100 / B391 / X010
TOM    |  A100 / A510
Run Code Online (Sandbox Code Playgroud)

所以我想知道的是:是否有可能在SQL Server中编写用户定义的函数来模拟其功能group_concat

我几乎没有使用UDF,存储过程或类似的东西的经验,只是直接的SQL,所以请错误地说太多的解释:)

sql sql-server sql-server-2005 string-aggregation

342
推荐指数
9
解决办法
17万
查看次数

Stuff和'For Xml Path'在Sql Server中是如何工作的

表是:

+----+------+
| Id | Name |
+----+------+    
| 1  | aaa  |
| 1  | bbb  |
| 1  | ccc  |
| 1  | ddd  |
| 1  | eee  |
+----+------+
Run Code Online (Sandbox Code Playgroud)

所需输出:

+----+---------------------+
| Id |        abc          |
+----+---------------------+ 
|  1 | aaa,bbb,ccc,ddd,eee |
+----+---------------------+
Run Code Online (Sandbox Code Playgroud)

查询:

SELECT ID, 
    abc = STUFF(
                 (SELECT ',' + name FROM temp1 FOR XML PATH ('')), 1, 1, ''
               ) 
FROM temp1 GROUP BY id
Run Code Online (Sandbox Code Playgroud)

此查询正常运行.但我只需要解释它是如何工作的,或者是否有其他或简短的方法来做到这一点.

我很难理解这一点.

sql database sql-server

320
推荐指数
5
解决办法
45万
查看次数

如何在sql server中使用group_concat进行查询

我知道在sql server中我们不能使用Group_concat函数但是这里有一个问题,我需要Group_Concat我的查询.我谷歌它发现了一些逻辑,但无法纠正它.我的SQL查询是

select  m.maskid,m.maskname,m.schoolid,s.schoolname,
md.maskdetail
from tblmask m join school s on s.id = m.schoolid 
join maskdetails md on m.maskid = md.maskid
order by m.maskname ;
Run Code Online (Sandbox Code Playgroud)

它给我的结果如

在此输入图像描述

只看前三行在那个maskid,maskname,schoolid,schoolname是相同的但是maskdetail是不同的,所以想要一行,其中最后一列可以包含所有maskdetails,如maskid等等.

我希望我的输出像

在此输入图像描述

等等.请在查询时帮助我.

提前致谢.

sql-server string-aggregation sql-server-group-concat

104
推荐指数
4
解决办法
18万
查看次数