Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Temukan konektivitas nilai kolom

Saya cukup yakin Anda membutuhkan CTE rekursif. Namun, hasil sampel Anda tidak masuk akal.

Berikut ini pada dasarnya melakukan apa yang Anda inginkan:

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, '_%')
                 );

Di sini adalah db<>biola.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pernyataan BERGABUNG Bersyarat SQL Server

  2. Indeks SQL Server:Persyaratan utama, dampak kinerja, dan pertimbangan

  3. Akses ditolak untuk xp_cmdshell yang diaktifkan untuk pengguna admin

  4. Cara mengimpor file DBF di SQL Server

  5. SQL:mengurai nama depan, tengah dan belakang dari bidang nama lengkap