sql >> Database teknologi >  >> RDS >> Sqlserver

Find kolonneværdiernes forbindelse

Jeg er ret sikker på du har brug for en rekursiv CTE. Dine prøveresultater giver dog ikke mening.

Følgende gør grundlæggende hvad du vil:

with cte AS (
      select nod1, nod2, nod_length as Total_length,
             convert(varchar(max), concat('-', nod1, '-', nod2, '-')) as nodes, 1 as lev
      from tbl_nodes n
      where nod1 = 'A'
      union all
      select cte.nod1, n.nod2, cte.Total_length + n.nod_length,
             convert(varchar(max), concat(cte.nodes, n.nod2, '-')) as nodes, lev + 1
      from cte join
           tbl_nodes n
           on cte.nod2 = n.nod1
      where nodes not like concat('%-', n.nod2, '-%') 
     )
select nodes, total_length
from cte
where not exists (select 1
                  from cte cte2
                  where cte2.nodes like concat(cte.nodes, '_%')
                 );

Her er en db<>violin.




  1. Konverter SQL-forespørgsel til brug af sætoperatører

  2. 8 Nye Oracle-kompatibilitetsfunktioner i EnterpriseDB PPAS 9.2 Beta

  3. Kan nogen forklare, hvad MERGE-erklæringen virkelig gør i Oracle?

  4. Hvordan gemmer man flere gentagelige felter som array i databasen?