這是所有在SQL Server更容易2012
SELECT T1.VarcharField,
T1.DX,
T1.ROWID,
SUM(QC) OVER (PARTITION BY VarcharField ORDER BY DX) AS Total
FROM tbl AS T1
如你在2008年和上面的語法不你可以嘗試添加這個索引
CREATE INDEX ix ON tbl(VarcharField,DX) INCLUDE (ROWID, QC)
然後使用以下查詢
WITH RecursiveCTE
AS (SELECT VarcharField,
DX,
ROWID,
QC,
QC AS Total
FROM (SELECT *,
ROW_NUMBER() OVER (PARTITION BY VarcharField ORDER BY DX) AS RN
FROM tbl) T
WHERE RN = 1
UNION ALL
SELECT R.VarcharField,
R.DX,
R.ROWID,
R.QC,
R.Total
FROM (SELECT T.*,
T.QC + Total AS Total,
rn = ROW_NUMBER() OVER (ORDER BY T.DX)
FROM tbl T
JOIN RecursiveCTE R
ON R.VarcharField = T.VarcharField
AND R.DX < T.DX) R
WHERE R.rn = 1)
SELECT VarcharField,
DX,
ROWID,
Total
FROM RecursiveCTE
OPTION (MAXRECURSION 0);
這種計算運行總計的方法不會擴展到100萬行。 –