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

SQL Server奇怪的分组方案按多列和或

SQL Server奇怪的分组方案按多列和或

干得好:

with g (rootid, previd, level, keyid, col1, col2, col3) as (
  select keyid, '-', 1, keyid, col1, col2, col3 from item
  union all
  select g.rootid, g.keyid, g.level + 1, i.keyid, i.col1, i.col2, i.col3 
    from g
    join item i on i.col1 = g.col1 or i.col2 = g.col2 or i.col3 = g.col3 
    where i.keyid > g.keyid
),
  m (keyid, rootid) as (
  select keyid, min(rootid) from g group by keyid
)
select * from m;

结果:

keyid  rootid  
-----  ------
a      a       
b      a       
c      a       
d      a       
e      a       
f      a       
g      g       
h      g

:请记住,认情况下,sql Server在处理递归CTE时限制为100次迭代(每个组的行数)。 :即使可以如上所述进行操作,sqlServer可以处理的内容也有明显的限制。如果达到此限制,您将收到以下消息:

在语句完成之前,最大递归100已用尽。

如果发生这种情况,请考虑添加子句option (maxrecursion 32767)

SQLServer 2022/1/1 18:45:30 有605人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

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

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

请先登录

推荐问题


联系我
置顶