我有一個要求,我必須在數據庫中執行一點計算(即在SQL查詢中)。在解釋我的要求,讓我解釋一下表結構:在SQL中的表之間的不同行和列的總和和產品
關係表
Client(k) PolicyCvg(k) Relationship
----------------------------------------------------
RAJ 1234 00 OWNER
RAJ 1234 01 INSURED
BRAD ASDF 00 OWNER
RAJ ASDF 01 INSURED
BRAD ASDF 02 INSURED
BRAD ASDF 03 INSURED
BRAD ASDF 04 INSURED
BRAD ABCDEF00 OWNER
BRAD ABCDEF01 INSURED
RAJ ABCDEF01 INSURED
策略表
Policy(k) Mode MaxCvgNum
------------------------------------------
1234 02 03
ASDF 06 04
ABCDEF 01 02
覆蓋表
Policy(k) Cvg(k) Amount Tax Risk
----------------------------------------------------------------------
1234 01 500.00 2.00 HIGH
ASDF 01 200.00 0.75 LOW
ASDF 02 300.00 0.76 LOW
ASDF 03 400.00 0.26 HIGH
ASDF 03 500.00 0.78 LOW
ABCDEF 01 1000.00 3.15 MEDIUM
ABCDEF 02 100.00 0.03 LOW
我的要求是在一行的Coverage表中總結Amount
和Tax
,並將其與政策表中相應的Policy
的Mode
相乘;我們稱之爲AMT
。
然後總結覆蓋表中所有行的所有AMT
(SUM (AMT)
)。 要從Coverage/Policy Table中選擇一個特定的策略行,我首先會從Relationship表中選擇'BRAD'爲Owner的策略。
到目前爲止,我一直只能夠拿出下面的查詢爲每個表:
SELECT SUBSTRING(PolicyCvg,1,6) AS Policy
FROM Relationship
WHERE RELATIONSHIP = 'OWNER' AND CLIENT = 'BRAD'
SELECT Mode
FROM Policy
WHERE Policy IN (
SELECT SUBSTRING(PolicyCvg,1,6) AS Policy
FROM Relationship
WHERE RELATIONSHIP = 'OWNER' AND CLIENT = 'BRAD'
)
SELECT Amount,Tax
FROM Coverage
WHERE Policy IN (
SELECT SUBSTRING(PolicyCvg,1,6) AS Policy
FROM Relationship
WHERE RELATIONSHIP = 'OWNER' AND CLIENT = 'BRAD'
)
我輸入的是客戶,所以首先從關係表,其中獲取來自該客戶端的策略該關係是OWNER。
接下來從策略表中爲所選策略獲取模式,並從Coverage表中獲取這些策略的總金額和稅額。
現在將從覆蓋表中獲得的總和乘以策略表中的模式。將爲所有政策獲得的所有此類產品相加,並將其作爲TotalRisk的輸出。
現在我很困惑如果要構建一個複雜的聯合查詢或爲我的需求構建一個Oracle函數,而且我對這兩個領域的知識都很少。
你能幫我一下嗎?
我會建議創建一個函數並從函數返回所需的輸出。 –