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

Проблем със заявката на Sql Server2005

Можете да използвате рекурсивен CTE .

Нещо подобно

DECLARE @Table TABLE(
        Supervisorid INT,
        Empid INT
)

INSERT INTO @Table SELECT 3, 4
INSERT INTO @Table SELECT 3, 5
INSERT INTO @Table SELECT 3, 8

INSERT INTO @Table SELECT 4, 9
INSERT INTO @Table SELECT 4, 10
INSERT INTO @Table SELECT 4, 11

INSERT INTO @Table SELECT 8, 12
INSERT INTO @Table SELECT 8, 13

DECLARE @ID INT
SELECT  @ID = 3

;WITH Vals AS (
        SELECT  *
        FROM    @Table
        WHERE   SuperVisorID = @ID
        UNION ALL
        SELECT  v.SuperVisorID,
                t.Empid
        FROM    Vals v INNER JOIN
                @Table t    ON  v.Empid = t.Supervisorid
)
SELECT  SuperVisorID,
        COUNT(Empid) Total
FROM    Vals
GROUP BY    SuperVisorID



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Генерирайте уникални произволни числа с помощта на SQL

  2. Как да създам условна клауза WHERE?

  3. Отложената подготовка не може да бъде завършена грешка при използване на локална база данни като свързан сървър

  4. Най-добрият начин за промяна на клъстерен индекс (PK) в SQL 2005

  5. SQL сървърът избира отделни редове, използвайки само най-новата стойност