客戶表(包含報價方案)
報價表(不同方案不同計劃)
重量數據表
關系圖
返回效果,根據重量去計算客戶所對應的報價方案來計算運費。(運費計算公式:公斤價格*重量(g)/1000 挂号費)
(一) 計算思路:
(二) 篩選報價表
針對報價表,我們首先要确定實際重量處于報價重量區間哪一部分,适用于哪個報價。
1. 條件1
篩選重量所對應的區間。
'重量數據'[重量]>='報價表'[起始重量] && '重量數據'[重量]<'報價表'[結束重量]
2. 條件2
篩選客戶對應的方案。
'重量數據'[客戶]=Related('客戶表'[客戶])
解釋:因為重量數據表和客戶表是有關聯,客戶表是1端,重量數據表是多端,所以如果多端直接引用1端則使用Related。因為重量數據表裡面沒有客戶信息,隻有方案信息,所以要通過Related去引用客戶表裡的對應的客戶信息。
3. 了解篩選過程結果
以第一個數據,我們把條件代入篩選公式。甲客戶,300g。通過Related去關聯到甲客戶對應的報價方案A,在标價表中去篩選方案A
然後根據重量去尋找哪個區間段。300g小于結束重量,并大于起始重量的隻有0-500這個區間。所以我們得出的報價篩選結果如下圖。
(三) 計算運費
篩選出報價表後,那就容易計算了,我們需要提取2個字段,一個是公斤價格,一個是挂号費。針對單行的表格,取字段值就可以直接用Values函數。因為Values返回的是表,但是如果是當行單列則返回的是值格式。添加列書寫:
var f= Filter('報價表','重量數據'[重量]>='報價表'[起始重量] && '重量數據'[重量]<'報價表'[結束重量] && Related('客戶表'[客戶])='重量數據'[客戶] ) return Calculate(Values('報價表'[公斤價格]),f)*'重量數據'[重量]/1000 Calculate(Values('報價表'[挂号費]),f)
度量值書寫:
SumX('重量數據', //公斤費計算 Calculate(Values('報價表'[公斤價格]),Filter('報價表','報價表'[起始重量]<='重量數據'[重量] && '報價表'[結束重量]>'重量數據'[重量] && Related('客戶表'[客戶])='重量數據'[客戶] ) )*'重量數據'[重量]/1000 //挂号費計算 Calculate(Values('報價表'[挂号費]),Filter('報價表','報價表'[起始重量]<='重量數據'[重量] && '報價表'[結束重量]>'重量數據'[重量] && Related('客戶表'[客戶])='重量數據'[客戶] ) ) )
注意:在度量值中,如果直接使用var變量的話,會出現錯誤,因為涉及到上下文的原因。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!