在我的查询中,当 RowNum =1 时,不会获取到空值。

11 浏览
0 Comments

在我的查询中,当 RowNum =1 时,不会获取到空值。

在我的查询中,我得到了两个日期:\n

    \n

  1. NULL
  2. \n

  3. 17-May-19 00.00.00
  4. \n

\n但是当我使用Rownum = 1时,它不会返回空值:\n

Select AT.PRE_LAST_DATE 
From AUTHORIZATION AT 
Where AT.PROJECT_ID = 5 and AT.PRE_DESIG_ID = 48 and ROWNUM = 1  
Order By AT.ID Desc;

\n它返回:\n

    \n

  1. 17-May-19 00.00.00
  2. \n

\n现在我该如何获取第一个空值?

0
0 Comments

在这个查询中,当ROWNUM = 1时,不能获取到NULL值。这个问题的原因是在WHERE子句之后应用了ORDER BY子句,而WHERE子句只返回一个未定义顺序的行。为了先排序,然后选择顶部的行,可以使用子查询。

解决方法是使用子查询来先排序,然后选择顶部的行。具体的查询语句如下:

Select PRE_LAST_DATE 
From 
    (Select AT.PRE_LAST_DATE From 
        AUTHORIZATION AT 
        Where AT.PROJECT_ID = 5 and AT.PRE_DESIG_ID = 48
        Order By AT.ID Desc)
Where ROWNUM = 1;

这个查询首先在内部子查询中根据条件进行筛选和排序,然后在外部查询中选择ROWNUM = 1的行,以获取排序后的第一行结果。这样就可以确保在ROWNUM = 1时不会获取到NULL值。

通过使用这个修正后的查询语句,就可以解决在ROWNUM = 1时无法获取NULL值的问题。

0