【发布时间】:2014-07-11 15:26:24
【问题描述】:
我需要从表中选择一些行,但这些行必须按ROWNUMBER asc 排序,如果ROWNUMBER 为空,我必须按created desc 排序;
这是我没有按条件排序的sql查询;
SELECT FIN_CGU.*, RES.ROWNUMBER
FROM COMM$GROUP_USER FIN_CGU
FULL JOIN (SELECT AGGR_RES.R_GR AS TOT_GR,
ROW_NUMBER() OVER(ORDER BY AGGR_RES.M_DATE DESC) AS ROWNUMBER
FROM (SELECT MSG.GROUP_ID AS R_GR, MAX(MSG.CREATED) AS M_DATE
FROM COMM$MESSAGE MSG
JOIN COMM$GROUP_USER GR_USR
ON GR_USR.GROUP_ID = MSG.GROUP_ID
JOIN COMM$GROUP GR
ON GR.ID = MSG.GROUP_ID
WHERE GR.STATE <> 'DELETED'
AND GR_USR.STATE <> 'DELETED'
AND MSG.STATE <> 'DELETED'
AND GR_USR.USER_ID = 9172771513163989084
GROUP BY MSG.GROUP_ID) AGGR_RES
ORDER BY AGGR_RES.M_DATE DESC) RES
ON FIN_CGU.GROUP_ID = RES.TOT_GR
JOIN COMM$GROUP CG
ON FIN_CGU.GROUP_ID = CG.ID
WHERE (ROWNUMBER IS NULL OR ROWNUMBER BETWEEN 1 AND 3)
AND FIN_CGU.USER_ID = 9172771513163989084
AND RES.ROWNUM <= 3
ORDER BY
甲骨文10g;
【问题讨论】:
-
ORDER BY ROWNUMBER, CREATED DESC 适合您吗?如果不是,与所需结果集有什么区别?您可以添加所需排序的小例子来提问吗?
标签: sql oracle sql-order-by