Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 甲骨文先空_Sql_Oracle_Sorting_Null - Fatal编程技术网

Sql 甲骨文先空

Sql 甲骨文先空,sql,oracle,sorting,null,Sql,Oracle,Sorting,Null,我需要帮助对Oracle上的查询结果进行排序,其中我需要null位于顶部 MIN(SYSDATE - expiry) KEEP (DENSE_RANK FIRST ORDER BY SYSDATE - expiry DESC NULLS FIRST) AS active 结果是: ID NAME ACTIVE ================================= 4 John Smith 139 4 J

我需要帮助对Oracle上的查询结果进行排序,其中我需要null位于顶部

MIN(SYSDATE - expiry) KEEP (DENSE_RANK FIRST ORDER BY SYSDATE - expiry DESC NULLS FIRST) AS active
结果是:

ID      NAME               ACTIVE
=================================
4       John Smith         139
4       John Smith         NULL
4       John Smith         2700
7       Martha Snow        NULL
我需要它,以便它将结果排序如下:

ID      NAME               ACTIVE
=================================
4       John Smith         NULL
4       John Smith         139
4       John Smith         2700
7       Martha Snow        NULL

感谢那些愿意帮忙的人

您的语句只是给第三列赋值(大概是这样)。它不是对整个数据集进行排序。结果集是无序的,除非外部查询具有
order by

因此:

如果只有这三列,那么您可能甚至不需要
keep
。只是:

select id, name, (sysdate - expiry) as active
from . . .
order by id, active asc nulls first;

Oracle 11g R2架构设置

CREATE TABLE Data ( ID, NAME, ACTIVE ) AS
          SELECT 4, 'John Smith', 139 FROM DUAL
UNION ALL SELECT 4, 'John Smith', NULL FROM DUAL
UNION ALL SELECT 4, 'John Smith', 2700 FROM DUAL
UNION ALL SELECT 7, 'Martha Snow', NULL FROM DUAL
SELECT *
FROM   Data
ORDER BY ID, ACTIVE ASC NULLS FIRST
| ID |        NAME | ACTIVE |
|----|-------------|--------|
|  4 |  John Smith | (null) |
|  4 |  John Smith |    139 |
|  4 |  John Smith |   2700 |
|  7 | Martha Snow | (null) |
查询1

CREATE TABLE Data ( ID, NAME, ACTIVE ) AS
          SELECT 4, 'John Smith', 139 FROM DUAL
UNION ALL SELECT 4, 'John Smith', NULL FROM DUAL
UNION ALL SELECT 4, 'John Smith', 2700 FROM DUAL
UNION ALL SELECT 7, 'Martha Snow', NULL FROM DUAL
SELECT *
FROM   Data
ORDER BY ID, ACTIVE ASC NULLS FIRST
| ID |        NAME | ACTIVE |
|----|-------------|--------|
|  4 |  John Smith | (null) |
|  4 |  John Smith |    139 |
|  4 |  John Smith |   2700 |
|  7 | Martha Snow | (null) |

CREATE TABLE Data ( ID, NAME, ACTIVE ) AS
          SELECT 4, 'John Smith', 139 FROM DUAL
UNION ALL SELECT 4, 'John Smith', NULL FROM DUAL
UNION ALL SELECT 4, 'John Smith', 2700 FROM DUAL
UNION ALL SELECT 7, 'Martha Snow', NULL FROM DUAL
SELECT *
FROM   Data
ORDER BY ID, ACTIVE ASC NULLS FIRST
| ID |        NAME | ACTIVE |
|----|-------------|--------|
|  4 |  John Smith | (null) |
|  4 |  John Smith |    139 |
|  4 |  John Smith |   2700 |
|  7 | Martha Snow | (null) |

哈看起来我可以按照ORDERBY子句进行排序。ORDER BY active ASC NULLS FIRST为什么按sysdate排序,但在数据中没有日期是的,我在发布问题后通过尝试找到了答案。谢谢你的回答!是的,我确实这么想。谢谢你的回答。