Supondo que você queira obter irmãos do valor
@p0
, você pode usar uma auto-junção simples:SELECT p.Child
FROM Table1 c
INNER JOIN Table1 p ON c.Parent = p.Parent
WHERE c.Child = @p0
AND p.Child <> @p0
A cláusula de não igualdade aqui garante que você obtenha irmãos sem incluir o valor que você pesquisou. Remova-o conforme necessário.
Exemplo do SQL Fiddle
Já que você mencionou recursão, talvez você queira a árvore inteira começando no pai do valor
@p0
. Nesse caso, você pode usar um CTE recursivo:WITH parent AS (
SELECT Parent
FROM Table1
WHERE Child = @p0
), tree AS (
SELECT x.Parent, x.Child
FROM Table1 x
INNER JOIN parent ON x.Parent = parent.Parent
UNION ALL
SELECT y.Parent, y.Child
FROM Table1 y
INNER JOIN tree t ON y.Parent = t.Child
)
SELECT Parent, Child
FROM tree
Exemplos do SQL Fiddle usando seus dados ecom dados adicionais para demonstrar o CTE recursivo