在cte query sqlserver 2008中初始化和增加变量
发布时间:2020-12-12 14:18:05 所属栏目:MsSql教程 来源:网络整理
导读:我正在使用sqlserver 2008,我想在我的第二部分(问题行)中同时初始化和增加变量(@NUMTwo). 我正在创建一个cte查询. 这是可能的,如果是的话请告诉我. 以下是一个示例.我希望我很清楚. CREATE table #TempTable (childProductID INT,parentProductID INT,produc
我正在使用sqlserver 2008,我想在我的第二部分(问题行)中同时初始化和增加变量(@NUMTwo).
我正在创建一个cte查询. 这是可能的,如果是的话请告诉我. 以下是一个示例.我希望我很清楚. CREATE table #TempTable ( childProductID INT,parentProductID INT,productModel varchar(50),[Num2] VARCHAR(100) ) DECLARE @NUMTwo INT = 0 WITH tableR AS ( -- First Part SELECT childProductID = null,parentProductID=null,productModel from Products where productid in (@a),[Num2] = convert(varchar(100),'') UNION ALL --Second Part SELECT e.childProductID,e.parentProductID,prd.productModel FROM ProductIncludes AS e,'1.' + @NUMTwo+=1 ) -- Problem line INNER JOIN Products AS PRD ON e.childProductID = PRD.productID WHERE parentProductID in (@a) ) INSERT INTO #TempTable(childProductID,parentProductID,productModel,[Num2]) SELECT childProductID,[Num2] END SELECT * FROM #TempTable 解决方法如果参数@NUMTwo仅用于编号行,则可以使用ROW_NUMBER()OVER(…)代替它,如下所示:WITH tableR AS ( SELECT childProductID = NULL,parentProductID = NULL,NUMTwo = CAST('0' AS VARCHAR(10)) FROM Products WHERE productid in (@a),'') UNION ALL SELECT e.childProductID,prd.productModel,NUMTwo = '1.' + CAST( ROW_NUMBER() OVER(ORDER BY (SELECT 0)) AS VARCHAR(10)) FROM ProductIncludes AS e INNER JOIN Products AS PRD ON e.childProductID = PRD.productID WHERE parentProductID in (@a) ) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |