请教一个plsql函数的写法
表a,固定数据记录如下
字段 position width
左1
左2
左3
左4
左5
右1
右2
右3
右4
右5
有的记录行有宽度值,有的记录行没有宽度,左1对应右1,同理其他行也是
现在想要求出position记录
条件是在某行(总共5行)内只有一条记录有宽度,也就是说要么左n(n为1,2,3,4,5)有记录,要么右n有记录,并且这条记录的width为最大
问题点数:50、回复次数:2Top
1 楼guga()回复于 2006-03-03 12:04:12 得分 0
position width
左1 1
左2 2
左3 2
左4
左5
右1 2
右2
右3 2
右4
右5
那么得出的结果位置应该要是 左2,即第2行左2的位置宽度最大
Top
2 楼boydgmx(授人以鱼不如授人以渔(baidu&google))回复于 2006-03-03 14:06:51 得分 0
针对你的数据,搞出这么一个SQL语句,可用但对于大表效率肯定不高。
WITH V AS (
SELECT SUBSTR(POSITION,1,1) AS POS,SUBSTR(POSITION,2) AS POS_ID,WIDTH FROM TEST
)
SELECT POS||POS_ID AS POSITION,WIDTH FROM (
SELECT *
FROM V A
WHERE A.WIDTH IS NOT NULL
AND EXISTS(
SELECT 1
FROM V B
WHERE A.POS_ID=B.POS_ID
AND B.WIDTH IS NULL
) ORDER BY WIDTH DESC
) WHERE ROWNUM<=1;
btw:希望这不是你们实际应用中的数据表,否则这种表结构+这种需求岂不很麻烦?Top




