SQL Server层次结构,为不同的ID选择父节点

时间:2019-06-28 05:53:25

标签: sql sql-server hierarchical

停留在此层次结构问题上,所以去了。 我有以下层次结构表,该表已被截断。

HierarchyIDs

该层次结构已连接到“代码”列上的另一个表,具有以下示例结果。我们将此表称为1。

table with hierarcjy

对于表1中的每个不同的ID,我想利用层次结构查找父级(如果存在)。 例如,在“代码”列下,18是19的父级。 我想将19与18进行折叠或分组,并消除该行。 预期的结果是这样的。

desired result

这确实使用GetAncestor方法实现了我想要的:

SELECT A.OrgNode, A.Codes, A.ID, B.OrgNode, B.Codes, B.ID FROM table1 A INNER JOIN table1 B ON A.OrgNode.GetAncestor(1) = B.OrgNode WHERE A.ID = B.ID

1 个答案:

答案 0 :(得分:0)

这种具有GetAncestor函数的自联接,实现了我想要的工作,并在同一ID上使用了“ where”。

$result=Braintree_Transaction::sale([ 'amount'=>$amount, 'paymentMethodNonce'=>$nonce, 'options'=> [ 'submitForSettlement'=>True ] ]);