Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

如何利用sql实现EXCEL中lookup函数的功能

colorto  发表于:2016-07-22 15:46:12  
复制

在excel中进行数值分析时候经常采用lookup进行查询匹配,例如hdm表中第一列桩号(1,2,3,4,5,6)第二列kr(A,B,C,D,E,F) 
 则cal2表中计算2.2对应的值时,应返回小于2.2的最大值,即2对应的列值为B,请问在sql中如何实现,我写了一个sql语句,但是运行非常慢
在access中
DoCmd.RunSQL "update cal2 as t1 left join hdm as t2 on t1.起点>=t2.桩号set t1.K=t2.kr"         ‘运行了12秒
DoCmd.RunSQL "update cal2 as t1 left join hdm as t2 on t1.起点 =t2.桩号set t1.K=t2.kr"         ’运行了0.48秒

补充说明

左侧为A表 右侧为B表,已知起点,求K,在excel中用=LOOKUP(I9,$F$9:$F$15,$G$9:$G$15)函数 一拖就出来了,可是在access中却需要12秒


补充说明2:
现在A表中已知n(6000)个点的坐标,在B表中已知m(4000)多个点的X坐标,要求其Y坐标,根据线性代数y=kx+b,我在A表中已经计算了每个点对应的K和B,现在在b表中计算已知点的斜率,即线性插入值的y坐标


 

Top
金宇 发表于:2016-08-05 17:27:28

在数据库只需要使用表与表之前的关联更新

access中:update 表A innser join 表B on 表A.对应字段 = 表B.对应字段 set 表A.需要更新字段=表B.字段


SQLServer中:update 表A set 表A.需要更新字段=表B.字段 from 表A join 表B on 表A.对应字段 = 表B.对应字段



总记录:1篇  页次:1/1 9 1 :