从具有实例计数的表中返回不同的记录

时间:2019-06-20 17:34:30

标签: sql tsql

我有一个数据库,该数据库记录了发出的请求,并且正在尝试查找为每个请求引发的唯一异常以及引发该异常的每个实例的FK。我尝试了许多不同的迭代,但是似乎无法找到可行的解决方案,因此我想在这里提出问题,因为我肯定我对此考虑过多。

样本数据

Unauthorized User   42
Internal Server Error   57
Unauthorized Employee   88
Bad Request 57
Bad Request 42
Bad Request 42
Bad Request 42
Bad Request 42
Bad Request 42
Unauthorized User   57

采样所需结果

Unauthorized    42, 88, 57
Internal Server Error   57
Bad Request 42, 57

编辑:版本为Sql Server 2014,我已根据请求将数据从图像更改为嵌入式文本。我对答案感到满意,但为获得奖励,我在以下条件下添加了具有相似异常的源数据,但希望将它们像未经授权的异常一样进行分组。

到目前为止我所拥有的:

Select r.Exception, stuff(
   (select distinct FK + ',' 
    from [Table] wr 
    where r.Exception = wr.Exception 
    for XML PATH('')),1,0,''
) as [FKs]
From [Table] r
Group by r.Exception

1 个答案:

答案 0 :(得分:1)

SQL Server(从2017年开始)

SELECT Exception, STRING_AGG (FK, ',') AS FK
FROM YourTable
GROUP BY Exception; 

OR

Optimal way to concatenate/aggregate strings