当前位置: 首页 > 面试题库 >

当使用带领带的ROW_NUMBER()OVER小数列时不确定的排序顺序

冯茂实
2023-03-14
问题内容

我在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;

我得到了另一个具有相同FTE值的人的contactId,但是我不明白为什么WHERE
rowindex不返回正确的行(如果我显示IndexedRows,它看起来不错!)。

我不认为这很有趣,但是Vw_HrEmployee是一个View。

欢迎任何帮助您解决问题的想法/想法/解决方法

提前致谢


问题答案:

这是一个猜测,但是如果该FTE值有重复的值,则无法保证每次运行代码时它们将按哪个顺序出现。SQL
Server可能会在您执行简单操作SELECTSELECT使用WHERE条件进行更改之间更改查询计划,从而导致出现不同的顺序以及您所看到的内容。

我会在您的末尾添加PK,ORDER BY以确保顺序始终保持一致。



 类似资料:
  • 我试图建立一个方法,将排序一个二维数组的双打按列。基于所提供的规范,此方法也不应该采用长度不等的行的粗糙数组。我正在使用双[][]mdarray={{3.0, 4.0, 1.0, 8.0},{13.0, 2.0, 12.0, 9.0}测试这个 使用打印方法时,应将其显示为 3.0, 2.0, 1.0, 8.0, 13.0, 4.0, 12.0, 9.0, 使用单独的打印方法输出结果时,数组似乎没有

  • 我在寻找字典上最小的字符串的排列数。 例如,< code>bbaa现在,字典上最小的字符串是< code>aabb,因此,排列是, < code>(1,2,3,4),(2,1,3,4),(1,2,4,3),(2,1,4,3)也就是4。 我对它的想法(在python中)是找到最小的字符串(基本上将其排序为字符串),然后创建一个计数器来存储每个字符的计数。 因为,我们不需要一个在字典上变得更大的字符串

  • 问题内容: 我如何使用numpy unique而不对结果进行排序,而仅按它们在序列中出现的顺序排序?像这样吗 而不是 使用幼稚的解决方案应该可以编写一个简单的函数。但是,由于我需要多次执行此操作,因此有什么快速而整洁的方法吗? 问题答案: 您可以使用参数执行此操作:

  • 我们可以看到candidate_num是不正确的。下面是这个表的结构。我不明白为什么“2”在“19”后面。

  • 问题内容: 我正在尝试对从JSON源填充的数据表进行排序。我的代码如下: HTML: JS: 小提琴:http : //jsfiddle.net/7czsM/1/ 如您所见,我试图将click函数添加到表标题中,以调用对数据进行排序的函数,但是它不起作用。 我已经在这里看到了这种方法的示例,该示例可以起作用:http : //jsfiddle.net/vojtajina/js64b/14/,但是当

  • 问题内容: 我有一个包含数字的字符串列表,但找不到找到对它们进行排序的好方法。 例如,我得到这样的东西: 用的方法。 我知道我可能需要以某种方式提取数字,然后对列表进行排序,但是我不知道如何以最简单的方式进行操作。 问题答案: 也许您正在寻找人工排序(也称为自然排序): 产量 PS。我已经更改了答案,以使用Toothy的自然排序实现(在此处发表评论),因为它比我的原始答案快得多。 如果您希望使用浮