Sql Server2005 проблема запроса - PullRequest
       1

Sql Server2005 проблема запроса

0 голосов
/ 22 октября 2010

У меня есть таблица, которая содержит следующие поля

  • Supervisorid
  • Empid

Это похоже на реферальную программу.Парень может ссылаться на 3 парней под ним, т. Е. 3 ссылается на трех парней, а именно 4 5 8 аналогично, 4 ссылается на 9 10, и 11 аналогично 8 ссылается на 12, 13 это выглядит так ...чтобы получить общее количество нижестоящих членов под парнем, скажем, 3

1 Ответ

3 голосов
/ 22 октября 2010

Вы можете использовать Recursive 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...