我正在尝试查询SQL Server表'tableA‘中具有列'node’(varchar)和'destination‘(位)的以下结构的数据。节点列中的数据基于上下级关系。子行: 1001111001将所有这些行/节点作为父行(100111100、10011110、1001111、100111、10011、1001、100、10、1)。我希望在sql server上的存储过程中完成以下操作。
1-检索子节点的所有父节点。
2-如果所有父目标都等于0,则更新子行的目标
发布于 2017-06-06 13:28:27
试试这个:
CREATE PROCEDURE UP_PROCEURENAME
@tablename varchar(30)
AS
BEGIN
DECLARE @cnt INT = 1
WHILE @cnt < len(destination)
(select left(destination, len(destination)-@cnt) AS Parents from @tablename
set @cnt = @cnt + 1)
END LOOP
GO
IF(LEFT(destination,LEN(destination)-1) = 0)
UPDATE @tablename
SET destination = ------YOUR UPDATE STATEMENT
END
EXEC UP_PROCEURENAME TableA发布于 2017-06-06 13:54:57
SELECT ones.n + 10*tens.n + 100*hundreds.n + 1 AS Num,
Left(@S, ones.n + 10*tens.n + 100*hundreds.n + 1) as ParentNode,
t.Destination as ParentDestination
FROM (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) ones(n),
(VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) tens(n),
(VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) hundreds(n),
tableA t
WHERE ones.n + 10*tens.n + 100*hundreds.n BETWEEN 0 AND Len(@s)-2 AND t.Node = Left(@S, ones.n + 10*tens.n + 100*hundreds.n + 1)
ORDER BY ones.n + 10*tens.n + 100*hundreds.n至于更新,您现在可以检查所有父目的地的总和是否为0
https://stackoverflow.com/questions/44381798
复制相似问题