[英]How to calculate a percentage on different values from same column with different criteria
我正在嘗試在 SSRS 中編寫一個查詢(使用 SQL)來計算每個月的損益表銷售額百分比(年份是用戶在運行時選擇的參數)。 但是,我必須用於數據的表格列出了所有年、月、帳戶、美元等,如下所示:
ACCT_YEAR | ACCT_PERIOD | 帳戶ID | CREDIT_AMOUNT |
---|---|---|---|
2021年 | 1個 | 4000 | 20000 |
2021年 | 2個 | 4000 | 25000 |
2021年 | 1個 | 5000 | 5000 |
2021年 | 2個 | 5000 | 7500 |
2021年 | 1個 | 6000 | 4000 |
2021年 | 2個 | 6000 | 8000 |
等等等等(ACCOUNT_ID =4000恰好是銷售賬號)
例如,我需要計算
CREDIT_AMOUNT when ACCT_YEAR = 2021, ACCT_PERIOD=1, and ACCOUNT_ID=5000
/
CREDIT_AMOUNT when ACCT_YEAR = 2021, ACCT_PERIOD=1, and ACCOUNT_ID=4000
* 100
然后,我將為 ACCT_YEAR 中的每個 ACCT_PERIOD 執行此操作。 希望這是有道理的......我想要的是這樣的:
ACCT_YEAR | ACCT_PERIOD | 帳戶ID | 百分比 |
---|---|---|---|
2021年 | 1個 | 5000 | 0.25 |
2021年 | 2個 | 5000 | 0.30 |
2021年 | 1個 | 6000 | 0.20 |
2021年 | 2個 | 6000 | 0.32 |
我正在嘗試創建一個圖表來顯示大約 10 個不同帳戶的銷售額百分比(我知道他們的特定 account_ID 並將按這些 ID 進行過濾)並使用折線圖小部件按月顯示趨勢。
我嘗試過 CASE 場景、OVER 場景和嵌套子查詢。 我覺得這應該很簡單,但我很冷靜,沒有看到明顯的解決方案。 有什么建議么? 謝謝!
您只需使用一個矩陣,其中父列組用於 ACCT_YEAR,子列組用於 ACCT_PERIOD。 然后你可以使用你的計算。 如果將文本框格式化為百分比,則不需要將其乘以 100。
文本框值: =IIF(ACCOUNT_ID=4000, Sum(CREDIT_AMOUNT), 0) = 0, 0, IIF(ACCOUNT_ID=5000, Sum(CREDIT_AMOUNT), 0) / IIF(ACCOUNT_ID=4000, Sum(CREDIT_AMOUNT), 0)
需要注意的一個重要行為是 window 函數在 where 子句之后應用。
因為您需要在任何 where 子句(將過濾掉帳戶 4000)之前應用 window 函數,所以需要在一個 scope 中使用它們,而在另一個 scope 中使用 where 子句。
WITH
perc AS
(
SELECT
*,
credit_amount * 100.0
/
SUM(
CASE WHEN account_id = 4000 THEN credit_amount END
)
OVER (
PARTITION BY acct_year, accr_period
)
AS credit_percentage
FROM
your_table
)
SELECT
*
FROM
perc
WHERE
account_id IN (5000,6000)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.