我正在尝试从产品类别中获取最后一层。扭曲是,类别得到子类别,最后一层只有parentId它的恐吓子类别。所以我试图获得子类别,然后使用该子类别id再次做同样的事情,直到它到达最后一类。识别最后一个类别的唯一方法是线型。所以我想用while循环,但我都很困惑。
例如
Declare @x Varchar(200)
Set @x = 'H506563'
Select stockCode
FROM stock
Where ParentStockCode = @x
它返回stockCode的集合,它将在下一次迭代中成为ParentStockCode,然后每个将再次给出stockCodes集合。因此,此过程将持续到我进入lineType为S的最后一级。
有没有办法做到这一点。任何建议都会有所帮助。谢谢 希望这有助于更好地理解
具有零件编号的最后一级 -
答案 0 :(得分:0)
您没有提供足够的样本数据。所以我无法检查查询。查询应仅返回带有LineType = 'S'
的stockCode。您应该提供更多样本数据(而非图片)以获得更好的帮助
declare @x varchar(200) = 'H506563'
;with rcte as (
select
StockCode, ParentStockCodeNo, LineType
from
stock
where
ParentStockCodeNo = @x
union all
select
b.StockCode, b.ParentStockCodeNo, b.LineType
from
rcte a
join stock b on a.StockCode = b.ParentStockCodeNo
)
select StockCode
from rcte
where LineType = 'S'
option (maxrecursion 0)