0
我有一張表,其中包含某些日期的股票及其權重列表。我想要做的是在兩個不同的日期選擇屬於投資組合的股票,並比較權重。下面簡單的例子,比較同一表中的記錄並計算不同日期的差異
Date 1st March 2015 Date 1st May 2015
Stock Name Weight Stock Name Weight
ABC 20 MNO 30
DEF 15 XYZ 25
MNO 40 LMN 30
LMN 25 PPP 10
KLM 5
ABC 20
結果我想
Stock Name Weight Change
ABC 0
DEF -15
MNO -10
LMN 5
PPP 10
KLM 5
XYZ 25
這是我到目前爲止這是不是很接近我所需要的!
with t0 as
(select * from PORT_WGT
and port_name = 'My Port'
and wgt <> 0
and pricedate = '2015-01-02'),
t1 as
(select * from PORT_WGT
where counterparty = 'JPM'
and port_name = 'My Port'
and wgt <> 0
and pricedate = '2015-01-30')
select * from t0 union all
select * from t1
更新
剛剛意識到我是使用了錯誤類型的連接,請參閱我的更新查詢。我只需要計算權重
with t0 as
(select * from PORT_WGT
where port_name = 'My Port'
and wgt <> 0
and pricedate = '2015-01-02'),
t1 as
(select * from PORT_WGT
where port_name = 'My Port'
and wgt <> 0
and pricedate = '2015-01-30')
select coalesce(t0.sedol, t1.sedol), coalesce(t0.co_name, t1.co_name) from t0 full outer join t1 on t0.sedolchk = t1.sedolchk
對不起Giorgos我剛纔意識到,上面的查詢確實可行,但每行都會出現兩次。你知道如何解決這個問題嗎? – mHelpMe
@mHelpMe那麼,您提供的示例數據所涉及的問題是不可重現的。您還可以檢查我所做的編輯,提供替代解決方案。你能設置一個sqlfiddle來證明這個問題嗎? –
你的權利它確實與我的簡單示例一起工作,而不是與我的實際數據。需要考慮導致行被複制的原因 – mHelpMe