动态光标函数计算运行总计

时间:2014-05-01 00:04:40

标签: sql-server

背景

我经常需要计算数据库中几个不同表的运行总计。

关于运行总计算的几个小时的研究(对我来说最有用的解释可能是this在Stackoverflow上发布,它给出了每种方法的简要总结)我选择了非常好的光标方法。

问题:

我必须为每个我想要计算运行总数的不同表重写运行总光标,我想知道是否有任何变通方法?是否可以创建一个将表/列名称作为输入参数并返回具有运行总计的表的函数?

我的尝试:

我的第一步是创建一个使用多个变量的动态查询(我确实有检查以确保表和列存在):

    SET @SQLStatement   = '
            DECLARE rt_cursor CURSOR
                FOR
             SELECT ' + @DateColumn + ', SUM(' + @ValueColumn + ')
               FROM ' + @TableName + '
           GROUP BY ' + @DateColumn + '
           ORDER BY ' + @DateColumn

   EXEC sp_executesql @sqlstatement

   OPEN rt_cursor

效果很好......

然后我尝试将其合并到一个函数中(由于我现在非常清楚的原因)这没有用(函数执行不起作用)

......所以我决定寻求帮助。

PS:我是新手,新手,你喜欢什么样的电话,虽然我很欣赏批评,但我只想让这个工作做得最好我能够。我只做兼职兼职,没有时间学习适当的SQL的所有细节和注意事项,所以解决方案而不是理论课也会受到赞赏 - 即使它只是"这不会工作"。

谢谢大家!

1 个答案:

答案 0 :(得分:0)

听起来你只需要创建一个存储过程,这将允许你做你想做的一切。该过程将您的变量作为参数(@DateColumn,@ TableName等)。

您有几个选择可以返回结果:

  1. 您可以在调用过程填充的过程之前创建临时表。
  2. 在程序结束时返回结果,并且在调用时,您可以将结果放入表中。
  3. 如果您已经有一个表来存储结果,只需在程序结束时插入它们