2017-08-02 108 views
0
SELECT sc.TAAC_SHARE_CLASS_ID, 
    SCS.SHARE_CLASS_SID, 
    SCS.REPORTING_DT, 
    SCS.SHARE_CLASS_SNAPSHOT_SID, 
    SCS.DIST_UNMOD_30_DAY_YIELD_PCT, 
    SCS.DER_DIST_12_MO_YIELD_PCT, 
    SCS.DER_SEC_30_DAY_YIELD_PCT AS SCS_DER_SEC_30_DAY_YIELD_PCT, 
    SCS.DER_SEC_RESTATED_YIELD_PCT AS SCS_DER_SEC_RESTATED_YIELD_PCT 
    FROM SHARE_CLASS sc 
    INNER JOIN PORTFOLIO P ON (P.PORTFOLIO_SID=SC.PORTFOLIO_SID) 
    INNER JOIN SHARE_CLASS_SNAPSHOT SCS ON 
    (SCS.SHARE_CLASS_SID=sc.SHARE_CLASS_SID) 
    WHERE SCS.REPORTING_DT = '24-JUL-17' AND P.PORTFOLIO_ID = 638; 

我跑這個查詢,並得到了以下的輸出:image甲骨文的SQL查詢與內部聯接涉及和值

在這裏,而不是讓不同的行爲同一TAAC_SHARE_CLASS_ID,我想合併的輸出相同的TAAC_SHARE_CLASS_ID。

例如,第一行與TAAC_SHARE_CLASS_ID = 000648應該具有的值對於所有的4列:

SCS.DIST_UNMOD_30_DAY_YIELD_PCT, 
SCS.DER_DIST_12_MO_YIELD_PCT, 
SCS.DER_SEC_30_DAY_YIELD_PCT, 
SCS.DER_SEC_RESTATED_YIELD_PCT. 

因此,第一行應具有這些列值作爲2.96,3.2972596,7541.085263433,7550

我輸出的最後4行並不是真正需要的,因爲我們現在已經將這些數據合併到前4行中。

我該如何改變這個查詢來實現相同?請幫忙。

+0

請點擊圖片查看查詢 – Sid

+1

沒有感謝的輸出。請參閱https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-query – Strawberry

+0

爲什麼這個標記爲MySQL您的標題說Oracle請修復正確的標記。 –

回答

1

我建議你組你的結果通過TAAC_SHARE_CLASS_ID列,MAX()其餘的列,這樣的事情:

SELECT sc.TAAC_SHARE_CLASS_ID, 
     max(SCS.SHARE_CLASS_SID) as SHARE_CLASS_SID, 
     max(SCS.REPORTING_DT) as REPORTING_DT, 
     max(SCS.SHARE_CLASS_SNAPSHOT_SID) as SHARE_CLASS_SNAPSHOT_SID, 
     max(SCS.DIST_UNMOD_30_DAY_YIELD_PCT) as DIST_UNMOD_30_DAY_YIELD_PCT, 
     max(SCS.DER_DIST_12_MO_YIELD_PCT) as DER_DIST_12_MO_YIELD_PCT, 
     max(SCS.DER_SEC_30_DAY_YIELD_PCT) AS SCS_DER_SEC_30_DAY_YIELD_PCT, 
     max(SCS.DER_SEC_RESTATED_YIELD_PCT) AS SCS_DER_SEC_RESTATED_YIELD_PCT 
FROM SHARE_CLASS sc 
INNER JOIN PORTFOLIO P ON (P.PORTFOLIO_SID=SC.PORTFOLIO_SID) 
INNER JOIN SHARE_CLASS_SNAPSHOT SCS ON (SCS.SHARE_CLASS_SID=sc.SHARE_CLASS_SID) 
WHERE SCS.REPORTING_DT = '24-JUL-17' AND P.PORTFOLIO_ID = 638 
GROUP BY sc.TAAC_SHARE_CLASS_ID; 
+0

Group通過引發錯誤。表達不是一個有效的組合。 – Sid

+0

您剛剛複製粘貼解決方案還是添加了更多列?我看不出什麼可能是錯的。您可以嘗試對所有Max()行進行註釋,然後逐個重新啓用它們,以查看哪一行是問題行的... –

+0

工作正常,謝謝:) – Sid