出于某种原因(懒),想在sql中实现数据按照树形结构进行分组合计,在关联表的时候需要一个节点与对应叶子节点对照的表。所以不知道下面这个操作用sql语句能实现不,不想要函数或者存储过程这种的,那样的话我就在代码里写了。
希望将
id pid
1 0
2 1
3 1
4 2
5 2
6 3
7 3
转换为
id lid
1 4
1 5
1 6
1 7
2 4
2 5
3 6
3 7
4 4
5 5
6 6
7 7
另外树的表结构中还有是否是叶子节点和层级这两个字段,如果有需要的字段也可以自己加
另外本问题源于个人的求知与探索欲望,不要喷我“sql不是啥都能干的”这种
这种需求可用SQL的recursive with实现:
以上在 MSSQL2014 运行通过。