我有一張表,在滿足某個條件時,我需要從中總結表中的值。在Where子句中使用If/CASE語句
這是我從查詢初始表:
Worksheet Label LOB Data
-----------------------------------------
Layers AAL EQ-AO-US 64726.02706
Layers AAL EQ-CA 171683.6675
Layers AAL EQ-Int-M 858.9752352
Layers AAL EQ-NM 9225.104696
Layers AAL EQ-PNW 12554.17653
Layers AAL NWS-Int-M 63142.0387
Layers AAL NWS-US 300230.9489
P&L AdjAAL EQ-AO-US 32363.01353
P&L AdjAAL EQ-CA 251180.82
P&L AdjAAL EQ-NM 4612.552348
P&L AdjAAL EQ-PNW 6277.088264
P&L AdjAAL NWS-Int-M 31571.01935
P&L AdjAAL NWS-US 132993.08
我需要的總和上市LOB的數據查詢和調出最後的總和。首先,我需要檢查一個LOB是否存在AdjAAL,如果是,那就使用那個。否則,我需要使用AAL「模型化」值特定LOB
MS SQL查詢
select FileID,
Sum(cast(Data as float)) as Modeled
from Premium_DATA
where Label in ('AdjAAL','AAL') and LOB in ('NWS-US',
'NWS-Int-M',
'EQ-CA',
'EQ-NM',
'EQ-PNW',
'EQ-AO-US',
'EQ-Int-M',
'StormSurge-US')
and FileID = 17719
group by FileID
上面的查詢加起來一切從LOB表,並給出了不正確的值作爲1081418.51206399。但我期望最終答案是459856.5487。 (我從上表中加入下面的數字得到這個數字)
AdjAAL 32363.01353
AdjAAL 251180.82
AdjAAL 4612.552348
AdjAAL 6277.088264
AdjAAL 31571.01935
AdjAAL 132993.08
AAL 858.9752352
對如何處理在where子句,甚至是更好的方法來獲取最終的正確答案用如果/ case語句的這種情況下,任何想法。
一樣的,所以如果一個'LOB'有兩個'labels'使用'AdjAAL'第一? –
你的rdbms是什麼? –
其MS SQL查詢 – Mike