0

我有一个为 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
4

1 回答 1

1

这应该这样做:

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 ;
于 2011-11-03T15:54:53.760 回答