当前位置: 代码网 > it编程>数据库>MsSqlserver > SQL2005CLR函数扩展-深入环比计算的详解

SQL2005CLR函数扩展-深入环比计算的详解

2024年05月18日 MsSqlserver 我要评论
此类问题还可以延伸到类似进销存的批次计算中,这也要关注其他历史记录来决定当前某条记录的状态。sql语句无法简单实现mdx语句的类似功能,必须得用交叉表关联来对比。这里我们用clr函数来实现mdx语句的

此类问题还可以延伸到类似进销存的批次计算中,这也要关注其他历史记录来决定当前某条记录的状态。

sql语句无法简单实现mdx语句的类似功能,必须得用交叉表关联来对比。这里我们用clr函数来实现mdx语句的类似语法。在select的时候把得到过的做个缓存就可以了。效率应该可以提高不少。

clr的代码如下,编译为testfun.dll,复制到sql服务器的文件目录下。
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
部署和生成自定义函数,其中考虑到并发,我们还是需要一个并发键来表达当前查询
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
这样我们就可以使用了,测试脚本如下, xfn_getprevmembervalue就是获取上月价格的函数。
--------------------------------------------------------------------------------
-- 建立测试环境
 
-- 测试语句
 
-- 结果
/*
区域   trademonth tradeprice             lastmonthprice         环比
---- ---------- ---------------------- ---------------------- -----------
闵行   2007-03    8796.67                null                   null
闵行   2007-04    9267.19                8796.67                5.35%
闵行   2007-05    9335.26                9267.19                 0.73%
浦东   2007-01    8976.73                null                   null
浦东   2007-02    12568.05               8976.73                40.01%
浦东   2007-03    8023.98                12568                  -36.16%
浦东   2007-04    18337.23                8023.98                128.53%
普陀   2007-01    11549.02               null                   null
普陀   2007-02    13496.24               11549                  16.86%
普陀   2007-03    7834                   13496.2                -41.95%
*/
--------------------------------------------------------------------------------
这个函数写的还是比较粗糙,如果进一步改进还可以详细定义如何获取上一个维度的方法。这里只是根据查询顺序来做缓存。感兴趣的朋友可以完善一下。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com