相关疑难解决方法(0)

如何将多行中的文本连接成SQL Server中的单个文本字符串?

考虑一个包含三个行的名称的数据库表:

Peter
Paul
Mary
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以将其转换为单个字符串Peter, Paul, Mary

sql sql-server csv string-concatenation group-concat

1813
推荐指数
33
解决办法
222万
查看次数


SQL查询 - 将结果连接成一个字符串

我有一个包含以下代码的sql函数:

DECLARE @CodeNameString varchar(100)

SELECT CodeName FROM AccountCodes ORDER BY Sort
Run Code Online (Sandbox Code Playgroud)

我需要将select查询中的所有结果连接到CodeNameString中.

显然,C#代码中的FOREACH循环会这样做,但我如何在SQL中执行此操作?

sql t-sql sql-server sql-function

36
推荐指数
4
解决办法
15万
查看次数

连接行值T-SQL

我试图将一些数据汇总到一个报告中,并需要连接其中一个表的行值.这是基本的表结构:

评测

 ReviewID  
 ReviewDate  
Run Code Online (Sandbox Code Playgroud)

评审

 ReviewerID  
 ReviewID  
 UserID  
Run Code Online (Sandbox Code Playgroud)

用户

UserID  
FName  
LName  
Run Code Online (Sandbox Code Playgroud)

这是M:M的关系.每个评论都可以有很多评论者; 每个用户都可以与许多评论相关联.

基本上,我想要看的是Reviews.ReviewID,Reviews.ReviewDate,以及该Review的所有相关用户的FName的串联字符串(逗号分隔).

代替:

ReviewID---ReviewDate---User  
1----------12/1/2009----Bob  
1----------12/1/2009----Joe  
1----------12/1/2009----Frank  
2----------12/9/2009----Sue  
2----------12/9/2009----Alice  
Run Code Online (Sandbox Code Playgroud)

显示这个:

ReviewID---ReviewDate----Users  
1----------12/1/2009-----Bob, Joe, Frank  
2----------12/9/2009-----Sue, Alice
Run Code Online (Sandbox Code Playgroud)

我发现这篇文章描述了一些方法,但是大多数方法似乎只处理一个表而不是多个; 不幸的是,我的SQL-fu不够强大,无法根据我的情况进行调整.我对该网站上使用FOR XML PATH()的示例特别感兴趣,因为它看起来最干净,最直接.

SELECT p1.CategoryId,
( SELECT ProductName + ', '
  FROM Northwind.dbo.Products p2
  WHERE p2.CategoryId = p1.CategoryId
  ORDER BY ProductName FOR XML PATH('')
) AS Products
FROM Northwind.dbo.Products p1
GROUP BY CategoryId;
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我一把吗?任何帮助将不胜感激!

sql t-sql sql-server concatenation

33
推荐指数
7
解决办法
5万
查看次数

这个查询创建逗号分隔列表SQL Server的作用是什么?

我在google的帮助下编写了这个查询,从表中创建了一个分隔列表,但我对此查询没有任何理解.

任何人都可以解释我发生了什么

 SELECT 
    E1.deptno, 
    allemp = Replace ((SELECT E2.ename AS 'data()' 
                       FROM emp AS e2 
                       WHERE e1.deptno = e2.DEPTNO 
                       FOR xml PATH('')), ' ', ', ') 
 FROM EMP AS e1 
 GROUP BY DEPTNO; 
Run Code Online (Sandbox Code Playgroud)

给我结果

10  CLARK, KING, MILLER
20  SMITH, JONES, SCOTT, ADAMS, FORD
30  ALLEN, WARD, MARTIN, BLAKE, TURNER, JAMES
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2008

12
推荐指数
2
解决办法
2万
查看次数

T-SQL(varchar(max)vs CLR(string,SqlString,SqlChars)?

我有一个问题,我无法解决.我正在使用SQL Server 2005,C#CLR来使用外部dll.问题在于参数的长度.我需要使用函数参数类型varchar(max).如果在C#代码,我使用string,SqlSring我不能使用T-SQL类型varchar(max),刚刚varchar(4000)nvarchar(4000).我需要说的是,当我需要使用超过4000个符号时,可能会出现这种情况,所以我需要知道,我需要使用哪种C#类型varchar(max).

我已经阅读了很多文章,其中有几篇说,为此,我可以使用SqlChars.但!我有字符串操作.我如何使用stringSqlString然后转换为SqlChars?(有可能SqlChars.ToString()SqlChars.ToSqlString()).

我没有找到任何C#代码.

c# t-sql types sql-server-2005 sqlclr

8
推荐指数
2
解决办法
1万
查看次数

SQL Server 2000中的Implode类型函数?

是否有SQL Server的Implode类型函数?

我所拥有的是一个列表(在SQL服务器表中):

 Apple
 Orange
 Pear
 Blueberry
Run Code Online (Sandbox Code Playgroud)

我想让他们出来

 Apple, Orange, Pear, Blueberry
Run Code Online (Sandbox Code Playgroud)

我希望空格和逗号可配置,但如果不是,我总是可以替换它...

快速帮助将不胜感激!

t-sql sql-server

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

如何在 MS SQL Server 中连接表函数结果?

我有类似这两个表(但实际上有数百万行):

items:
| X | Y |
---------
| 1 | 2 |
| 3 | 4 |
---------

details:
| X | A | B |
-------------
| 1 | a | b |
| 1 | c | d |
| 3 | e | f |
| 3 | g | h |
-------------
Run Code Online (Sandbox Code Playgroud)

我必须将一个表的几行聚合details为另一个表中的一行items,以便在 GridView 中显示它们,如下所示:

| items.X | items.Y | details.A | details.B |
---------------------------------------------
| 1       | 2       | a, …
Run Code Online (Sandbox Code Playgroud)

sql sql-server join function

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