你只是有一個重複的this question on running totals,但你必須擴大答案來計算運行百分比。我建議您閱讀鏈接問題的答案(請注意MSSQL 2012具有SUM...OVER
語法,歡呼!),因爲它們比我的建議更深入。
對於你的情況,你可以做這樣的事情得到一個正在運行的百分比:
DECLARE @table TABLE(col1 INT, col2 FLOAT);
INSERT INTO @table (col1, col2)
VALUES (1, 500), (2, 499), (3, 200), (4, 50), (5, 10), (6, 5)
DECLARE @col2total FLOAT = (SELECT SUM(col2) FROM @table)
-- Using subqueries
SELECT col1,
col2,
(SELECT SUM(col2) FROM @table sub WHERE sub.col1 <= base.col1)
/@col2total
* 100 AS RunningPercentage
FROM @table base
ORDER BY col1
-- Using cross join
SELECT t1.col1,
t1.col2,
SUM (t2.col2) RunningTotal,
SUM (t2.col2)/@col2total * 100 RunningPercentage
FROM @table t1 CROSS JOIN @table t2
WHERE t1.col1 >= t2.col1
GROUP BY t1.col1, t1.col2
ORDER BY t1.col1
有了這個應該很容易得到的頂部或底部80%的任何你想要的方式。
我建議你修改你的問題,因爲它有一個很少有問題使人們不太可能想要投入時間尋找答案。首先,研究[格式化](http://stackoverflow.com/editing-help)問題,我建議您將樣例數據集格式化爲代碼。我們到目前爲止所嘗試過的,你有什麼代碼,以及爲什麼你當前的解決方案不起作用。第三是mino如果可以的話,請回顧一下你的拼寫,語法,交互作用和你的問題的「流程」(如果需要的話,可以自己閱讀)。 – Jeroen
嗨Jeroen,希望現在有意義 – Gurru
它更有意義。我試圖通過編輯和進一步改進您的問題來提供幫助。如果您覺得我犯了一個錯誤,請隨時重新編輯它。你可以澄清的最後一件事:你爲什麼在問題標題和標籤中提到「SSRS」?這個問題本身似乎主要是關於SQL。 SSRS表達式的回答也可以接受嗎? – Jeroen