我目前正在處理 SSRS 報告,并且希望根據值是否超過一百萬來更改格式 誰能幫助我了解代碼的語法?
=IIF(Sum(Fields!ID_Total_Spend_.Value, "DS_ClientsYear") > 1000000, £#,,.0M;('£'#,N2,'m'), £#,0,k;(‘£’#,N2,’k’))
uj5u.com熱心網友回復:
我不確定您要達到的確切目標,但這是我構建的一個示例,應該可以讓您足夠接近。
我假設
- 如果值超過 1000000,那么您希望它顯示為數百萬,例如 12341234 將顯示為 £1234 萬
- 如果值大于 1000 但小于 100 萬,那么您希望它顯示為數千,例如 12341 將顯示為 £12.34K
- 如果值小于 1000,則顯示原樣到小數點后 2 位,例如 123 將顯示為 £123.00
- 負數只用括號括起來
我使用以下內容創建了一個示例資料集(以防您想重現)
DECLARE @t TABLE(id int, amount float)
INSERT INTO @t VALUES
(1, 1), (2,99), (3,99123), (4, 999123), (5, 1000000), (6, 12345678),
(7, -1), (8, -99), (9,-99123), (10, -999123), (11, -1000000), (12, -12345678)
SELECT * FROM @t
然后我添加了一個簡單的表格顯示
ID 列(供參考),未格式化的原始金額,使用“c2”標準貨幣格式格式化的原始金額,基于金額值的轉換金額,最后是應用自定義格式的轉換金額。
我只會解釋最后一列,因為這可能是您想要的。
我做的第一件事是將最終文本框的運算式更改為
=SWITCH(
ABS(Fields!amount.Value) >1000000, Fields!amount.Value / 1000000,
ABS(Fields!amount.Value) >1000, Fields!amount.Value / 1000,
True, Fields!amount.Value
)
這只是amount根據它的價值來劃分。SWITCH當它遇到第一個回傳 true 的運算式時停止,因此無需擔心某些值之間的數量。請注意,我ABS(amount)以相同的方式測驗除法對 ive 和 -ive 數字的作用。最后的True行為就像一個else.
您可以在“原始轉換金額”列中看到此運算式給出的輸出。
在最終文本框的格式屬性中,我將運算式設定為
=SWITCH(
ABS(Fields!amount.Value) > 1000000, "£#.00M;(£#.00M)",
ABS(Fields!amount.Value) > 1000, "£#.00K;(£#.00K)",
True, "£#.00;(£#.00)"
)
我們正在做與轉換金額相同的檢查,但這次回傳一個有效的格式字串。在此示例中,我使用了 2 節字串,分號前的位適用于 ive 數字和零。第二部分僅適用于 -ive 數字。
最終輸出看起來像這樣......

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/476690.html
