按包含数组的JSON列分组

时间:2018-10-21 05:30:26

标签: sql sql-server group-by sql-server-2016

我有下表:

Table

包含以下数据的

Data

如何将JSON列中的数组项分组?并得到以下结果:

Expected Result

2 个答案:

答案 0 :(得分:1)

您可以尝试将OPENJSONCROSS APPLY结合使用。

SELECT
    col1,
     UserID
FROM T t1
CROSS APPLY
    OPENJSON(t1.Roles)
    WITH
        (
            col1 varchar(50) N'$'
        ) AS a

sqlfiddle

答案 1 :(得分:1)

如果您不能使用OPENJSON,则可以选择

Select
    aRole, COUNT(*) as cnt
From (

    Select
        a.ID
        ,b.Items as aRole
    From 
        (Select *
            ,replace(replace(replace(Roles,'[',''),']',''),'"','') as Rolesx
         From JSONgroup) a
    Cross Apply dbo.Split(a.Rolesx, ',') b
) c
 group by aRole