我有以下查詢:的SQL Server ROW_NUMBER行爲
SELECT * FROM
(
SELECT
a.TeacherID, a.UniversityID,
ROW_NUMBER() OVER (ORDER BY a.TeacherID) AS RowNum
FROM
SelectAll a
LEFT JOIN
mp_Ratings r ON a.TeacherID = r.TeacherID
GROUP BY
a.TeacherID, a.UniversityID
) AS TeacherInfo
WHERE RowNum BETWEEN 10 AND 50
,它工作正常。現在,如果我想要做的事,如:
SELECT * FROM
(
SELECT
a.TeacherID, a.UniversityID,
ROW_NUMBER() OVER (ORDER BY a.TeacherID) AS RowNum
FROM
SelectAll a
LEFT JOIN
mp_Ratings r ON a.TeacherID = r.TeacherID
GROUP BY
a.TeacherID, a.UniversityID
) AS TeacherInfo
WHERE RowNum BETWEEN 10 AND 50 AND UniversityID = 2
我什麼也得不到,因爲UniversityID = 2
開始圍繞行數。我希望能夠重置Row_Number
與每個不同的UniversityID
。
我試過如下:
SELECT *, ROW_NUMBER() OVER (ORDER BY TeacherID) AS RowNum
FROM
(
SELECT
a.TeacherID, a.UniversityID
FROM
SelectAll a
LEFT JOIN
mp_Ratings r ON a.TeacherID = r.TeacherID
GROUP BY
a.TeacherID, a.UniversityID
) AS TeacherInfo
WHERE UniversityID = 2
帶來一套新的row_numbers
爲每一個搜索,但如果我嘗試使用RowNum
別名爲這樣:
SELECT *, ROW_NUMBER() OVER (ORDER BY TeacherID) AS RowNum
FROM
(
SELECT
a.TeacherID, a.UniversityID
FROM
SelectAll a
LEFT JOIN
mp_Ratings r ON a.TeacherID = r.TeacherID
GROUP BY
a.TeacherID, a.UniversityID
) AS TeacherInfo
WHERE UniversityID = 2
AND RowNum BETWEEN 10 AND 20
我得到
消息207,級別16,狀態1,行4無效的列名'RowNum'。
我的選擇有什麼問題?爲什麼我不能訪問RowNum
別名?
謝謝,我已經有了內內選擇一個WHERE子句,但我沒有注意到,我也有過這是導致選擇帶來UniversityID = 1 or子句和2(由於OR)。 – 2013-03-26 19:59:38