我爲與下面的腳本結束一些管理信息的報告建立一個前10名:阿爾特十大時四捨五入到1位小數等於100
IF @ReportType = 'SectorEQ'
BEGIN
/* Final Select with roll up for total per portfolio */
SELECT
CONVERT(VARCHAR, ReportingDate, 103) AS ReportingDate
, PortfolioID AS FundCode
, PortfolioNme AS FundName
, CASE
WHEN GROUPING_ID(ReportingDate, PortfolioID, PortfolioNme, Sector, [Rank], [Weight]) = 7 THEN 'Total'
ELSE Sector
END AS Sector
, CASE
WHEN GROUPING_ID(ReportingDate, PortfolioID, PortfolioNme, Sector, [Rank], [Weight]) = 7 THEN 102
ELSE [Rank]
END AS [Rank]
, CAST(SUM([Weight]) AS DECIMAL(22,1)) AS Percentage
FROM @FinalOutputEQ_CS
GROUP BY ReportingDate
, PortfolioID
, PortfolioNme
, Sector
, [Rank]
, [Weight] WITH ROLLUP
HAVING GROUPING_ID(ReportingDate, PortfolioID, PortfolioNme, Sector, [Rank], [Weight]) IN (1,7)
ORDER BY ReportingDate
, PortfolioID
, [Rank]
正如你所看到的,百分比四捨五入到小數點後一位,這可能會導致四捨五入問題,因爲百分比與小數點後一位的總和可能小於或大於100,即100.1或99.9。我需要做的是確保四捨五入到小數點後1位的百分比都等於100.0。
我想要做的就是檢查一下,如果不是採用Top 1並減去其百分比的差值,則舍入百分比的總和等於100.0。
我對如何做到這一點有一些想法,但我想知道什麼纔是確保這個快速高效運行而不會減慢proc下降的最佳方法?
編輯:示例表
ReportingDate FundCode FundName Sector Rank Percentage
28/02/2013 XXXXXXXX XXXXXXXXXXXXXXX Consumer Discretionary 1 16.1
28/02/2013 XXXXXXXX XXXXXXXXXXXXXXX Health Care 2 13.8
28/02/2013 XXXXXXXX XXXXXXXXXXXXXXX Information Technology 3 11.8
28/02/2013 XXXXXXXX XXXXXXXXXXXXXXX Telecommunication Services 4 10.3
28/02/2013 XXXXXXXX XXXXXXXXXXXXXXX Consumer Staples 5 10.1
28/02/2013 XXXXXXXX XXXXXXXXXXXXXXX Industrials 6 8.7
28/02/2013 XXXXXXXX XXXXXXXXXXXXXXX Financials 7 6.8
28/02/2013 XXXXXXXX XXXXXXXXXXXXXXX Materials 8 6.5
28/02/2013 XXXXXXXX XXXXXXXXXXXXXXX Energy 9 5.2
28/02/2013 XXXXXXXX XXXXXXXXXXXXXXX Utilities 10 0.7
28/02/2013 XXXXXXXX XXXXXXXXXXXXXXX Cash and Bonds 101 10.1
28/02/2013 XXXXXXXX XXXXXXXXXXXXXXX Total 102 100.1
感謝您的答覆。我需要它去1個小數位。我想可能是將100與所有百分比之和的差值存儲到一個變量的一位小數位,然後選擇最終表的前1並從頂部刪除差異? – 2013-03-11 10:06:49
查看更新,它可能會解決您的問題 – djangojazz 2013-03-11 16:39:21
我已經爲我的問題添加了一個示例表。所以你會看到總數是100.1,這是由於四捨五入的問題。因此,我們將確定需要從頂部1中刪除0.1,從而使得16.0而不是16.1。我不明白你的回答能夠解決我的問題嗎?你能解釋更多嗎? (對於昏暗的抱歉) – 2013-03-12 09:43:29