相关疑难解决方法(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万
查看次数

我可以用逗号将多行划分为一列吗?

我试图在我的SQL Server数据库中合并这样的东西:

[TicketID], [Person]
 T0001       Alice
 T0001       Bob
 T0002       Catherine
 T0002       Doug
 T0003       Elaine

进入:

[TicketID], [People]
 T0001       Alice, Bob
 T0002       Catherine, Doug
 T0003       Elaine

我需要在SQL Server和Oracle中执行此操作.

我发现GROUP_CONCATMySQL 的功能完全符合我的需要,但MySQL不是一个选项.

编辑:测试台:

DECLARE @Tickets TABLE (
    [TicketID] char(5) NOT NULL,
    [Person] nvarchar(15) NOT NULL
)

INSERT INTO @Tickets VALUES
    ('T0001', 'Alice'),
    ('T0001', 'Bob'),
    ('T0002', 'Catherine'),
    ('T0002', 'Doug'),
    ('T0003', 'Elaine')

SELECT * FROM @Tickets
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2008

68
推荐指数
5
解决办法
9万
查看次数

从sql server 2005中的多行获取逗号分隔值

我有这张桌子

Cream
----------
CHOCALATE
GREEN
TEST
Run Code Online (Sandbox Code Playgroud)

想要输入这样的选择查询

奶油

CHOCALATE,GREEN,TEST

sql-server-2005

4
推荐指数
1
解决办法
9739
查看次数

用于group by的tsql聚合字符串

我有两张桌子:

名称(id,名称)地址(id,name_id,地址)

我想编写一个返回我的查询:名称,地址列表(address1,address2,adress3,..)

就像是:

Select A.name, B.list_of_addresses
From Names A
    Inner Join (Select name_id, /*list_of_addresses with comma between them*/
                From Addresses
                Group By name_id)  B ON A.id=B.name_id
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2005 group-concat

1
推荐指数
1
解决办法
4909
查看次数