Sql server 选择“以逗号分隔,以摘要计数?”?

Sql server 选择“以逗号分隔,以摘要计数?”?,sql-server,Sql Server,SQL Server,如何使用摘要计数选择到逗号分隔? 我有以下数据: DECLARE @TB TABLE (ID INT, APP VARCHAR(1)) INSERT INTO @TB VALUES (1, 'A'), (1, 'A'), (1, 'B'), (1, 'C'), (1, 'C'), (2, 'A'), (2, 'B'), (2, 'B') 我想这样查询结果: 我不确定您是否可以在T-SQL中轻松做到这一点。您是否考虑过将其改为JSON?在应用程序值和计数之间感觉到更多KV

SQL Server,如何使用摘要计数选择到逗号分隔
我有以下数据:

DECLARE @TB TABLE (ID INT, APP VARCHAR(1))
INSERT INTO @TB
VALUES
(1, 'A'),
(1, 'A'),
(1, 'B'),
(1, 'C'),
(1, 'C'),
(2, 'A'),
(2, 'B'),
(2, 'B')

我想这样查询结果:


我不确定您是否可以在T-SQL中轻松做到这一点。您是否考虑过将其改为JSON?在应用程序值和计数之间感觉到更多KVP类型的数据


看看这是否适合您。

我不确定您是否可以在T-SQL中轻松做到这一点。您是否考虑过将其改为JSON?在应用程序值和计数之间感觉到更多KVP类型的数据


查看一下,看看这是否适合您。

如果您使用的是SQL Server2017或更高版本,您可以使用以下字符串-

DECLARE @TB TABLE (ID INT, APP VARCHAR(1))

INSERT INTO @TB
VALUES
(1, 'A'),
(1, 'A'),
(1, 'B'),
(1, 'C'),
(1, 'C'),
(2, 'A'),
(2, 'B'),
(2, 'B')

SELECT 
    ID, STRING_AGG (T, ',') 
FROM 
    (SELECT ID, APP + ' ' + CAST(COUNT(*) AS VARCHAR) T
     FROM @tb
     GROUP BY ID,APP) A
GROUP BY ID
适用于SQL Server 2016或更早版本-


如果您使用的是SQL Server2017或更高版本,则可以使用以下字符串\u AGG-

DECLARE @TB TABLE (ID INT, APP VARCHAR(1))

INSERT INTO @TB
VALUES
(1, 'A'),
(1, 'A'),
(1, 'B'),
(1, 'C'),
(1, 'C'),
(2, 'A'),
(2, 'B'),
(2, 'B')

SELECT 
    ID, STRING_AGG (T, ',') 
FROM 
    (SELECT ID, APP + ' ' + CAST(COUNT(*) AS VARCHAR) T
     FROM @tb
     GROUP BY ID,APP) A
GROUP BY ID
适用于SQL Server 2016或更早版本-


你的MSSQL版本是什么?MSSQL Server 2016你的MSSQL版本是什么?MSSQL Server 2016我正在使用SQL Server 2016Ohh。。。然后您可以检查MSSQL中的内容语法。@Sophairk,请检查答案中添加的MSSQL 2016或更早版本的脚本。我正在使用SQL Server 2016Ohh。。。然后您可以检查MSSQL中的内容语法。@Sophairk,请检查答案中添加的MSSQL 2016或更早版本的脚本。我不明白,我正在构建一个报告过程。我不明白,我正在构建一个报告过程。