我运行以下查询
Select * From
(
Select
GUID,
MFG_CODE,
STK_NAME,
parentid,
masteritem,
ROW_NUMBER() over(order by guid) r
From Fstock Where MasterItem=1 OR isNull(parentID, '')=''
) a
Where r between 4716 And 4716
我得到以下结果
GUID MFG_CODE parentid masteritem r
31955 369553 0 1 4717
如您所见GUID 31955
,实际上是parentITEM
& 我需要在同一个查询中引入该父项的所有子项。
例如,如果我这样做:
Select * From Fstock where parentID = 31955
它返回它的 3 个孩子
GUID
31956
31957
31958
那么有没有办法将这两个查询组合在一起,我只想使用row_number()
函数返回固定数量的行,但是那些返回的行有时包含 a Parent ITem
,我想在同一个查询中返回这些父项的子项。
性能对我来说非常重要。
--- 编辑 ---- 我让它与以下查询一起工作,有人有其他想法吗?
With CTE
As
(
Select
GUID,
Manufacturer,
SELL_PRICE,
MFG_CODE,
parentid,
masteritem,
ROW_NUMBER() over(order by GUID) r
From Fstock Where MasterItem=1 OR isNull(parentID, '')=''
)
Select A.*,F.parentID From
(
Select * From CTE
Where r between 4717 And 6000
) A
Left join Fstock F on F.parentID = A.GUID
Order by A.r