这是一个装配树,我想使用递归T-SQL
查询(大概CTE
)和下面的预期结果进行搜索。我想知道给定任何零件的每个组件的总量。
这意味着如果我搜索“铆钉”,我想知道程序集中每个级别的总数,而不仅仅是直接子项计数。
Assembly (id:1)
|
|-Rivet
|-Rivet
|-SubAssembly (id:2)
| |
| |-Rivet
| |-Bolt
| |-Bolt
| |-SubSubAssembly (id:3)
| |
| |-Rivet
| |-Rivet
|
|-SubAssembly (id:4)
|-Rivet
|-Bolt
DESIRED Results
-------
ID, Count
1 , 6
2 , 3
3 , 2
4 , 1
Run Code Online (Sandbox Code Playgroud)
目前,我可以获得直接父母,但想知道如何扩展我的 CTE 以允许我向上滚动此信息。
With DirectParents AS(
--initialization
Select InstanceID, ParentID
From Instances i
Where i.Part = 'Rivet'
UNION ALL
--recursive execution
Select i.InstanceID, i.ParentID
From PartInstances i INNER …
Run Code Online (Sandbox Code Playgroud) 试图运行更新,但我想逐步完成它,因为它有相当多的数据并且不想一次全部爆炸。
在 oracle 中,选择我想要的行要容易一些,因为您可以将它包含在WHERE
子句中,但在 T-SQL 中您将它包含在select
. 我想写一些类似的东西:
Update Instances
set thing = 'new thing'
Where rownum<500
Run Code Online (Sandbox Code Playgroud)
基本上想一次做500个,这个语法在TSQL中可行吗?