У меня очень странная ошибка в SQL Server 2008:
Чтобы отобразить пейджер в представлении сведений о приложении CRUD, я делаю SQL-запрос для получения предыдущей и следующей записи относительно текущей, она работает хорошокроме как при заказе столбца DECIMAL, я могу свести проблему к этому запросу (FTE является десятичным (18,2)):
WITH [IndexedRows] AS (
SELECT
[ContactId],
[ContactCode],
[FTE],
[EmployeeName],
ROW_NUMBER() OVER ( ORDER BY [FTE] ASC ) AS [RowIndex]
FROM
[Vw_HrEmployee]
)
/* 1. I can see ContactId 1109 is rowindex 7 */
/*SELECT * FROM [IndexedRows];*/
/* 2. Get the RowIndex, it returns 7 */
/*SELECT [RowIndex]
FROM [IndexedRows]
WHERE [ContactId] = 1109;*/
/* 3. Why it doesn't returns ContactId 1109 ??? */
SELECT [ContactId],
[EmployeeName]
FROM [IndexedRows]
WHERE [RowIndex] = 7;
Я получаю contactId другого человека с таким же значением FTE,но я не понимаю, почему WHERE rowindex не возвращает правильную строку (если я отображаю IndexedRows, это выглядит хорошо!).
Я не думаю, что это здорово, но Vw_HrEmployee - это представление.
Любая помощь / идея / обходной путь для решения, который приветствуется,
Заранее спасибо