SQL Server 2008 Использование RANK для динамического нумерации строк - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть хранимая процедура, которая извлекает данные для отчета SS.Мне нужно включить столбец номера строки, но я никогда раньше не использовал RANK, и я получаю эту ошибку: столбец «WL.SSN» недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BYКто-нибудь может мне помочь с синтаксисом?Вот то, что у меня есть до сих пор.

    SELECT
        WL.SSN,
        WL.LastName,
        WL.FirstName,
        WL.AddressLine1,
        WL.AddressLine2,
        WL.AddressLine3,
        WL.City,
        WL.State,
        WL.ZipCode,
        WL.Plus4,
        S.SeminarID,
        S.SeminarType,
        RANK = Count(*)                     
    FROM 
        @tblWaitList WL
        INNER JOIN @tblSeminar S ON WL.SeminarGuid=S.SeminarGuid
    WHERE
        S.SeminarID = @SeminarID AND S.SeminarType = @SeminarType
        AND RowNumber = COUNT(*)    
    ORDER BY
        RANK

Я пробовал почти каждый подход к этому из http://support.microsoft.com/kb/186133, но я что-то упускаю.

Вот примерчто я пытаюсь достичь ...

 Rank        Au_Lname              Au_Fname
 ----        --------------        -----------
 1         Bennet                Abraham
 2         Blotchet-Halls        Reginald
 3         Carson                Cheryl
 4         DeFrance              Michel
 5         del Castillo          Innes
 6         Dull                  Ann
 7         Greene                Morningstar
 8         Green                 Marjorie

1 Ответ

1 голос
/ 03 ноября 2011

Это должно сделать:

SELECT rank() OVER (ORDER BY WL.LastName, WL.FirstName) as rank, WL.LastName, WL.FirstName 
FROM  @tblWaitList WL         
INNER JOIN @tblSeminar S 
ON WL.SeminarGuid=S.SeminarGuid     
WHERE S.SeminarID = @SeminarID AND S.SeminarType = @SeminarType         
ORDER BY rank ;
...