我发现很难在SQL server中创建一个规则引擎,我的输出基于2个输入。
该表格列出了每个活动获得的积分以及他仍然可以赚取的潜在积分。
每个人都需要获得一定数量的积分 - 例如,个人需要获得 80 积分才能获得资格。
最终输出必须输出3个推荐活动虽然必须考虑3个输出
我希望这是有道理的,我将在此感谢您的帮助。
问候
附加图像是仅1名工作人员的数据集示例,该数据集包含多个工作人员,每个活动获得不同的分数。
答案 0 :(得分:0)
我不完全清楚你之后会发生什么,但我猜你想要的3项活动的排名最低(没有重复)可以获得总积分+潜在点数高于160.否则,您不清楚如何获得所需积分。在这种情况下,您可以尝试这样的事情:
SELECT StaffNumber, Activity1, Activity2, Activity3
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY a1.Rank, a2.Rank, a3.Rank) RowNum,
a.StaffNumber,
a1.Activity Activity1,
a2.Activity Activity2,
a3.Activity Activity3
FROM (
SELECT StaffNumber, SUM(PointsEarned) PointsEarnedTotal
FROM activities
GROUP BY StaffNumber
) a
INNER JOIN activities a1
ON a.StaffNumber = a1.StaffNumber
INNER JOIN activities a2
ON a.StaffNumber = a2.StaffNumber
AND a1.Activity <> a2.Activity
INNER JOIN activities a3
ON a.StaffNumber = a3.StaffNumber
AND a1.Activity <> a3.Activity
AND a2.Activity <> a3.Activity
WHERE a.PointsEarnedTotal + a1.PointsPotential + a2.PointsPotential + a3.PointsPotential >= 160
) a
where RowNum = 1