如何在 Sql Server Compact 中执行类似 "STRING_AGG" 的操作?

How can I do something like "STRING_AGG" in Sql Server Compact?

大家

我想在 Sql Server Compact 中制作类似 STRING_AGG 的内容。

比如我想把下面table中的代码列展平:

+----+--------+  
| Id | Code   |  
+----+--------+    
| 1  | 256987 |   
| 1  | 256985 |   
| 1  | 356994 |  
+----+--------+  

所以我会得到类似的东西:

+----+------------------------+   
| Id | Codes                  |   
+----+------------------------+      
| 1  | 256987, 256985, 356994 |   
+----+------------------------+   

提前致谢!

有几种方法可以做到这一点:

1:使用合并

DECLARE @Tbl TABLE
(
Name VARCHAR(20)
);

INSERT INTO @Tbl VALUES
('Jim'),
('Tim'),
('Kim');

DECLARE @ReturnVar VARCHAR(256);

SELECT *
FROM @Tbl;

SELECT @ReturnVar = COALESCE(@ReturnVar + ', ', '') + Name
FROM @Tbl;

SELECT @ReturnVar;

2:使用 XML

DECLARE @Tbl TABLE
(
Name VARCHAR(20)
);

INSERT INTO @Tbl VALUES
('Jim'),
('Tim'),
('Kim');

DECLARE @ReturnVar VARCHAR(256);

SELECT STUFF((SELECT ',' + Name
                           FROM @Tbl
                           FOR XML PATH('')),1,1,'') AS Name;

您可以找到更详细的信息 here

您最好的选择是使用 C# (string.Join)。