3

我希望你能指出我正确的方向。

我正在尝试使用 SQL Server 2008 生成控制图 ( http://en.wikipedia.org/wiki/Control_chart )。创建基本控制图很容易。我只是计算平均值和标准差,然后绘制它们。

复杂的一点(至少对我来说)是我希望图表在识别出阶跃变化时重置平均值和控制限制。

目前我只对一种非常简单的识别阶跃变化的方法感兴趣,5 个点连续出现在平均值之上或之下。有更复杂的方法来识别它们(http://en.wikipedia.org/wiki/Western_Electric_rules),但我只想先搞清楚这个。

我制定的过程是:

  1. 按月和年汇总和排序,应用行号。
  2. 计算整体平均值
  3. 确定每个数据项是否高于、低于或等于平均值​​,用 +1、-1 或 0 标记。
  4. 识别它们何时是高于或低于平均值的 5 个连续数据项(当前使用光标)。
  5. 如果 5 个点高于或 5 个点低于平均值,则重新计算平均值。
  6. 重复直到表格结束。

在 SQL Server 中可以进行这种过程吗?感觉我可能需要一个递归 UDF,但递归有点超出我的能力!

向正确方向轻推将不胜感激!

干杯

4

1 回答 1

4

好的,我最终只使用 WHILE 循环进行迭代。我不会发布完整的代码,但步骤是:

  1. 设置用户定义的表数据类型,以便将数据传递到存储过程参数。

  2. 编写了附带的存储过程,该存储过程使用行号和 while 循环沿输入表中的每个数据值进行迭代,然后使用当前行号对输入数据的子集进行基于集合的处理(检查以下 5 点是否高于/低于平均值并在触发此标志时重新计算平均值和标准偏差)。

  3. 输出带有原始值、行号、月份、平均值、控制上限和控制下限的表格。

我还启动并运行了一个基于完整 Nelson 规则的工作,并且还将说明数据失败的测试。

目前它只在我进一步开发时被我使用,所以我设置了一个带有一些 VBA 的 Excel 表来动态构造一个 SQL 字符串,它作为命令文本传递给数据透视表。这样,您可以使用不同的数据集重复 ping USP,还可以更改有关程序运行方式的一些其他参数(例如调整控制限制等)。

最终,我希望能够将生成的数据传递给我们正在处理的 Business Objects 报告和仪表板。

于 2012-10-25T14:17:25.893 回答