2017-02-10 25 views
0

我得到的ORA-00913:「太多的值」錯誤,同時將一個數據透視表嵌套到另一個SQL。Oracle嵌套選擇返回ORA-00913「太多值」

我該如何糾正這個問題,或者是否有更簡單的方法來編寫這個程序,因爲我需要另一個程序的「NEEDTHISFIELD」字段。

SELECT null as NEEDTHISFIELD, (SELECT * FROM(
SELECT th.BUCHDAT,th.OID,th.EFTYP,ef.NAME,thp.XORDER,thp.THEVALUE 
FROM THISTORY th 
LEFT JOIN EFTYP ef on th.EFTYP = ef.OID 
LEFT JOIN THPARA thp on th.OID = thp.THISTORY 
WHERE th.EFTYP = 'xyz' 
) 
PIVOT (MAX(THEVALUE) FOR (XORDER) IN (
'100' AS "VAL1", 
'101' AS "VAL2" 
))) 
FROM DUAL; 

非常感謝!

+0

'SELECT'在'SELECT'有僅返回一行和一列。 –

回答

2

您的嵌套查詢將返回更多的一條記錄。 嘗試是這樣的

SELECT null as NEEDTHISFIELD,t.* FROM(
SELECT th.BUCHDAT,th.OID,th.EFTYP,ef.NAME,thp.XORDER,thp.THEVALUE 
FROM THISTORY th 
LEFT JOIN EFTYP ef on th.EFTYP = ef.OID 
LEFT JOIN THPARA thp on th.OID = thp.THISTORY 
WHERE th.EFTYP = 'xyz' 
) 
PIVOT (MAX(THEVALUE) FOR (XORDER) IN (
'100' AS "VAL1", 
'101' AS "VAL2" 
) t ; 
+0

這麼簡單,謝謝各位! ++ – FixFaier

2

就包括被轉動表的別名,那麼你可以將需要的領域將它添加到選定字段列表:

SELECT t.*, 
     NULL AS NeedThisField 
FROM (SELECT th.BUCHDAT, 
       th.OID, 
       th.EFTYP, 
       ef.NAME, 
       thp.XORDER, 
       thp.THEVALUE 
     FROM THISTORY th 
       LEFT JOIN EFTYP ef on th.EFTYP = ef.OID 
       LEFT JOIN THPARA thp on th.OID = thp.THISTORY 
     WHERE th.EFTYP = 'xyz' 
) 
PIVOT (
    MAX(THEVALUE) 
    FOR (XORDER) IN ('100' AS "VAL1", '101' AS "VAL2") 
) t;