我在下面的代码中使用sql 2014中的递归。
WITH products AS
(
SELECT
prd.productID,
prd.MainproductID,
prc.Price,Level = 0,
Row_ID = CAST(ROW_NUMBER() OVER (ORDER BY prd.productID) AS VARCHAR(MAX)),
Level2 = CAST(prd.productID AS VarChar(Max))
FROM
PrdTable prd
INNER JOIN prd_priceList (NOLOCK) prc ON prd.productID= prc.productID
WHERE prd.MainproductID IS NULL
UNION ALL
SELECT
prd.productID,
prd.MainproductID,
prc.Price,Level +1,
prcRec.Row_ID + '.' + CAST(ROW_NUMBER() OVER (PARTITION BY prd.MainproductID ORDER BY prd.productID) AS VARCHAR(MAX)),
Level2 = CAST(prcRec.productID AS VarChar(Max)) + ', ' + prcRec.Level2
FROM
products prcRec
INNER JOIN PrdTable prd ON prcRec.productID= prd.MainproductID
INNER JOIN prd_priceList (NOLOCK) prc ON prd.productID= prc.productID
)
select
productID ,
MainproductID ,
Level,
Row_ID,
Level2
from prodproductsucts
这个返回就像附件截图中的结果一样。我只想选择每个级别的底线。如果没有孩子则选择它。但如果有孩子那么将进入最新水平并选择最新水平。我alsa画黄色的行,我需要在截图中选择。
答案 0 :(得分:0)
如果我理解你的要求......
在最终查询中,只需添加以下... Where productID not in (Select Distinct ISNULL(MainProductID,-999) From products)
onchange="showCyclists()