我想在sql server上执行此查询
我可以通过循环执行此操作,但想知道是否有更简单的方法可以提供更好的性能
我有推荐表, 场景1:如果A有5分并且参考B有7分,则查询应该显示12分A(A分+ B分) 场景2:如果A有5并且引用具有7的B并且A引用具有3个点的C并且B引用具有4个点的D等等。 在这种情况下,A取得所有人的A + B + C + D
我的表看起来像这样
参考文献
sID bigint
sName varchar(50)
sPoints int
sRefID bigint
答案 0 :(得分:4)
您可以使用递归SQL执行此操作。试试这个:
With CTETable (sID, sRefID, sName, sPoints)
AS
(
SELECT Refs.sID, Refs.sRefID, Refs.sName, Refs.sPoints FROM Refs
UNION ALL
SELECT Refs.sID, Refs.sRefID, CTETable.sName, Refs.sPoints
FROM Refs INNER JOIN CTETable ON CTETable.sID = Refs.sRefID
)
Select sName, Sum(sPoints)
From CTETable
Group By CTETable.sName
这将是:
sName TotalPoints
A 360
B 210
C 130
D 80
E 90
F 90
G 60
H 40
I 20
J 50