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

时间:2019-05-02 10:06:58

标签: sql sql-server-ce

我想在Sql Server Compact中制作类似于STRING_AGG的东西。

示例:

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

所需结果:

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

谢谢!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-1)

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

1:使用COALESCE

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