Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Problem z zapytaniem SQL Server2005

Możesz skorzystać z Rekursywnego CTE .

Coś takiego

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. Zapytanie SQL Server wybierz 1 z każdej podgrupy

  2. Wyszukiwanie rozmyte w programie SQL Server z wartością procentową dopasowania

  3. Łączenie LIKE z IN w SQL

  4. Nie można zmniejszyć bazy danych „tylko do odczytu” | Zmniejsz dziennik transakcji podczas korzystania z grupy dostępności AlwaysOn

  5. Zmień typy kolumn w ogromnej tabeli