我有一个存储过程来提取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
答案 0 :(得分: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 ;