【发布时间】:2012-09-26 12:26:55
【问题描述】:
我正在尝试从 SQL Server 2008 中的分数列表生成摘要。
我有两张桌子:SQL Fiddle link
ScorePerson 表包含人的 ID 和他们的分数,从 -5 到 15。我的 SQL/存储过程的最终用户需要创建如下摘要:
Scoreband| TotalNoOfPeople | AvgScore
--------------------------------
-5 to 0 | 2 | -2
0 to 5 | 3 | 2
5 to 10 | 2 | 8
10 to 15 | 3 | 13.3
最终用户应该可以从ScoreMinMax 表中配置分数范围,即最小值和最大值。
我曾尝试使用 CASE stement 来实现这一点,但它会将摘要生成为列。我可能需要旋转它或从多个选择语句中使用 UNION。但如果ScoreMinMax 表中添加了新行,这种方法似乎无法扩展。
到目前为止,我能够使用 CROSS JOINT 获得与上面示例类似的一些结果,但它并不总是产生正确的结果。
有人能指出我如何实现这一目标的正确方向吗?
ScorePerson - contains actual scores
ScoreMinMax - the configuration for min and max score bands
【问题讨论】:
-
您是否想要一个查询,该查询将生成从
ScorePerson单独选择一个类似于表ScoreMinMax的结果集? -
你如何处理重叠值 0,5,10...?
-
您可以设置最小值和最大值,例如 -5 到 0、1 到 5、6 到 10 等等,或者按照 podiluska 的建议进行操作。
标签: sql sql-server-2008 tsql summary