【问题标题】:group by JSON Column that contains an array按包含数组的 JSON 列分组
【发布时间】:2018-10-21 05:30:26
【问题描述】:

我有下表:

包含这些数据:

如何按我的 JSON 列中的数组项进行分组?并得到这个结果:

【问题讨论】:

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


    【解决方案1】:

    您可以尝试使用OPENJSONCROSS APPLY 来实现。

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

    sqlfiddle

    【讨论】:

      【解决方案2】:

      如果你不能使用 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多