您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

大查询SQL-计算字符串中的元素

大查询SQL-计算字符串中的元素

您可以取消嵌套字符串,然后应用一些聚合逻辑:

with t as (
      select 'A >> B >> C' as items union all
      select 'A >> A >> B' as items union all
      select 'B >> B >> C >> C >> A' as items union all
      select 'B >> B >> B >> C >> A >> D' as items 
     )
select t.*,
       (select as struct max(case when n = 1 then item end) as item_1,
               max(case when n = 1 then cnt end) as item_1_cnt,
               max(case when n = 2 then item end) as item_2,
               max(case when n = 2 then cnt end) as item_2_cnt,
               max(case when n = 3 then item end) as item_3,
               max(case when n = 3 then cnt end) as item_3_cnt
        from (select item, dense_rank() over (order by min(n)) as n, count(*) as cnt
              from unnest(split(t.items, ' >> ')) item with offset n
              group by item
             ) x
       ).*
from t;

最里面的子查询使用计数器将字符串转换为行。然后将其汇总起来,以便在商品首次出现时对商品进行排序-以及商品的数量

最后,这些汇总到所需的不同列中。

SQLServer 2022/1/1 18:53:20 有427人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶