Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да правите заявки и анализирате йерархията на съседен списък с помощта на cte?

Вашите примерни данни правят въпроса по-ясен. Можете да събирате мениджърските нива, докато се спускате:

<предварителен код>; с дърво като (ИЗБЕРЕТЕ empid, mgrid, 1 като lv, 1 като ниво1, нула като ниво2, нула като ниво3, нула като ниво4, нула като ниво5 ОТ Служители КЪДЕ mgrid Е NULL UNION ВСИЧКИ ИЗБЕРЕТЕ E.empid, E.mgrid, T .lv + 1, T.level1, случай, когато T.lv =1, тогава E.empid else t.level2 край, случай, когато T.lv =2, тогава E.empid else t.level3 край, случай, когато T.lv =3 след това E.empid else t.level4 край, случай, когато T.lv =4 тогава E.empid else t.level5 край ОТ Служители AS E JOIN Tree T ON E.mgrid =T.empid )изберете *от дърво

Пример в SQL Fiddle.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Кой е най-добрият начин за обновяване на сборна таблица при натоварване?

  2. как да предам параметър с кавички

  3. Изпълнете заявка в SQL Server Analysis Services с IronPython

  4. Изграждане на динамична клауза WHERE в съхранена процедура

  5. Заявка за изброяване на броя на записи във всяка таблица в база данни