Sql 甲骨文先空
我需要帮助对Oracle上的查询结果进行排序,其中我需要null位于顶部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
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排序,但在数据中没有日期是的,我在发布问题后通过尝试找到了答案。谢谢你的回答!是的,我确实这么想。谢谢你的回答。