需求:使用Oracle存储过程,比较出A表id在B表中nums最小的sid,最小nums相同时取value最大的那条。
存在
A表:
id sid
1839 6
B表(group by sid后的):
id name sid nums value
1839 00:23:89:7B:0C:10 11 9 225
1839 00:23:89:7B:0C:10 1 9 308
1839 00:23:89:7B:0C:10 6 14 190
我现在卡在了,存储过程取B表RS结果一次只能取出一条,没发比较了。
技术不强逻辑不清,求指教自定义数组还是分析函数,语法逻辑怎么组织
------解决方案--------------------
以ID为1839为例:
SELECT SID FROM (SELECT SID,ROWNUM FROM B WHERE B.ID=1839 ORDER BY NUMS,VALUE DESC) WHERE ROWNUM=1
取B表中ID为1839的数据,按NUMS升序、VALUE降序排序,第一条数据的SID即为符合要求数据。