sir*_*ain 2 sql t-sql loops sql-server-2012
假设我有budget
13列的表 - account
并period01
通过period12
.
如果我想创建一个存储过程,它将返回period01到periodX的总和(其中X作为参数传递),我将如何进行此操作?
在VBA中,我通过创建一个简单的字符串解析器来解决这个问题,该解析器将为我构建SQL命令.但是,我正在尝试删除该层,并在数据库级别的存储过程中执行此操作.有没有更好的方法来实现这一点,从字符串解析和CASE语句?
这就是为什么你不应该存储像这样的旋转列.如果每个"句点"列都在一个单独的行上,那么处理它会简单得多.
为了帮助您入门,这是一个执行您想要的查询:
select b.*, @x, running.periodsum
from budget b outer apply
(select sum(v.period) as periodsum
from (values (1, b.period1), (2, b.period2), . . . (12, b.period12)) v(n, period)
where v.n <= @x
) running;
Run Code Online (Sandbox Code Playgroud)
而且您不必将其作为存储过程.您可以将其设置为用户定义的表函数.
归档时间: |
|
查看次数: |
37 次 |
最近记录: |