[英]SQL Server query update child node based on parent records
我正在尝试在SQL Server表“ tableA”中使用以下结构查询数据,该表的列为“节点”(varchar)和“目标”(位)。 节点列中的数据基于父/子关系。 行子节点:1001111001将所有这些行/节点作为父节点(100111100、10011110、1001111、100111、10011、1001、100、10、1)。 我想在sql server上的存储过程中完成以下操作
1-检索子节点的所有父节点。
2-如果所有父目标都等于0,则更新子行的目标
尝试这个:::
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
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.