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

SQL:Temukan jalur folder yang hilang dalam hierarki pemisahan

Menggunakan jalur tambahan ini (11,2,'U\V\Z\L\O\Q\R\S\T') untuk menampilkan beberapa folder yang hilang dalam satu jalur:

with cte as (
select BaseDirID, DisplayPath = left(DisplayPath,len(DisplayPath)-charindex('\',reverse(DisplayPath)))
from t
where DirLevel > 1
  and not exists (
  select 1 
  from t i
  where t.BaseDirId = i.BaseDirId
    and i.DisplayPath = left(t.DisplayPath,len(t.DisplayPath)-charindex('\',reverse(t.DisplayPath)))
    )
union all 
select BaseDirID, DisplayPath = left(DisplayPath,len(DisplayPath)-charindex('\',reverse(DisplayPath)))
from cte t
where not exists (
  select 1 
  from t i
  where t.BaseDirId = i.BaseDirId
    and i.DisplayPath = left(t.DisplayPath,len(t.DisplayPath)-charindex('\',reverse(t.DisplayPath)))                                                   
    )
)
select distinct * 
from cte

demo rextester:http://rextester.com/CEVGZ96613

kembali:

+-----------+-----------------+
| BaseDirID |   DisplayPath   |
+-----------+-----------------+
|         1 | A\B             |
|         1 | A\B\C\D         |
|         1 | A\B\F\G         |
|         2 | U\V             |
|         2 | U\V\M\L         |
|         2 | U\V\W\X         |
|         2 | U\V\Z           |
|         2 | U\V\Z\L         |
|         2 | U\V\Z\L\O       |
|         2 | U\V\Z\L\O\Q     |
|         2 | U\V\Z\L\O\Q\R   |
|         2 | U\V\Z\L\O\Q\R\S |
+-----------+-----------------+



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menyertakan Hasil yang Mengikat untuk Tempat Terakhir saat Menggunakan Klausa TOP di SQL Server

  2. Bagaimana cara menambahkan kolom identitas baru ke tabel di SQL Server?

  3. Cara Memeriksa Versi SQL Server Anda

  4. SQL - jangan tampilkan baris ketika dua kriteria terpenuhi

  5. Pembaruan atau penyisipan tampilan atau fungsi gagal karena berisi bidang turunan atau konstan