t-sql - 选择单个表中所有行组的组合

时间:2016-08-25 12:56:46

标签: sql-server recursion

好的,我有一张这样的表:

ThingID  SubthingID ThingLevel
1          1        0
1          2        0
1          3        0
1          4        0
2         14        1
2         17        1
3         22        1
3        950        1

我需要选择一组子东西,这样我最终得到一个来自0级东西的子东西,以及所有子东西的组合,每个来自1级东西。请注意,每个子东西属于它的东西 - 它们不可互换。因此,不能说,事物2与子事物950的组合。此外,事物有两个级别 - 级别0和级别1.级别1事物也是级别1,级别0事物总是级别0 - 实际上,这意味着1级事物可以与其他1级或0级事物组合,但0级事物只能与1级事物相结合。

所以输出看起来像是:

GroupID ThingID SubthingID  ThingLevel
1       1       1               0
1       2       14              1
1       3       22              1
2       1       2               0
2       2       14              1
2       3       22              1
3       1       3               0
3       2       14              1    
3       3       22              1
.       .       .               .
.       .       .               .
.       .       .               .
x       1       4               0
x       2       17              1
x       3       950             1

有多个0级的东西,每个都有一个到多个子东西。有多个1级的东西,每个都有一个到多个子东西。

直接看来,似乎nexted循环就是答案:

For each level 0 thing begin
    for each level 1 thing subthing begin
       etc...

但这显然不会处理一级事物的可变数量。

有没有办法用递归来做到这一点?

0 个答案:

没有答案