+ -
当前位置:首页 → 问答吧 → 询问实现这个需求的SQL的写法

询问实现这个需求的SQL的写法

时间:2011-09-06

来源:互联网

脚本如下,求出同一个ID内。。sort_id最大的t_data的值。我想的怎么都得先查出MAX(sort_id)再根据这个结果找出t_data。有没有不用子查询就能实现的方法??


CREATE TABLE t(
id NUMBER ,
sort_id NUMBER ,
t_data NUMBER);

INSERT INTO t VALUES(111,1,10);
INSERT INTO t VALUES(111,2,14);
INSERT INTO t VALUES(111,3,15);
INSERT INTO t VALUES(111,4,12);
INSERT INTO t VALUES(111,5,14);
INSERT INTO t VALUES(111,6,15);
INSERT INTO t VALUES(222,7,11);
INSERT INTO t VALUES(222,8,11);
INSERT INTO t VALUES(222,9,13);
INSERT INTO t VALUES(333,10,20);
INSERT INTO t VALUES(333,11,24);

查询结果:
---------------------------
111    6       15
222    9       13
333    11     24

作者: 风铃中の鬼   发布时间: 2011-09-06

SELECT ID,
       MAX(sort_id)KEEP(dense_rank LAST ORDER BY sort_id) sort_id,
       MAX(t_data)KEEP(dense_rank LAST ORDER BY sort_id) t_data
FROM t
GROUP BY ID

作者: jboracle1981   发布时间: 2011-09-06

搜一下keep函数

作者: ethcham   发布时间: 2011-09-06

分析函数呗,或者用表串联。其实和子查询差不多的。

作者: txlcl   发布时间: 2011-09-06



QUOTE:原帖由 jboracle1981 于 2011-9-6 10:56 发表
SELECT ID,
       MAX(sort_id)KEEP(dense_rank LAST ORDER BY sort_id) sort_id,
       MAX(t_data)KEEP(dense_rank LAST ORDER BY sort_id) t_data
FROM t
GROUP BY ID

后面两个查询出的不一定是同一行的数据,这个直接row_number分析函数,外层rn=1就可以了

作者: dingjun123   发布时间: 2011-09-06

热门下载

更多