日期:2014-05-17 浏览次数:21041 次
SELECT t.*,
MAX(t.NAME) KEEP(DENSE_RANK FIRST ORDER BY t.TIME) OVER(PARTITION BY t.area) min_name,
MAX(t.NAME) KEEP(DENSE_RANK LAST ORDER BY t.TIME) OVER(PARTITION BY t.area) min_name
FROM t
------解决方案--------------------
这个。楼上兄弟基本搞定,
我在这里补充一下分析函数吧!
RANK :根据ORDER BY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置
DENSE_RANK :根据ORDER BY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置
FIRST :从DENSE_RANK返回的集合中取出排在最前面的一个值的行
LAST :从DENSE_RANK返回的集合中取出排在最后面的一个值的行
FIRST_VALUE :返回组中数据窗口的第一个值
LAST_VALUE :返回组中数据窗口的最后一个值。
LAG :可以访问结果集中的其它行而不用进行自连接
LEAD :LEAD与LAG相反,LEAD可以访问组中当前行之后的行
ROW_NUMBER:返回有序组中一行的偏移量,从而可用于按特定标准排序的行号
------解决方案--------------------
正解啊