2017-02-10 11 views
0

ORA-00913:「too many values」ピボット・SQLを別のSQLにネストしている間にエラーが発生しました。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'あり1つの行と1つの列だけを返すようにします。 –

答えて

2

ネストされたクエリは1つ以上のレコードを返します。 その後、あなたが選択したフィールドのリストにそれを必要なフィールドを追加することができますだけに旋回テーブルの別名が含まれ、この

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`で

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; 
関連する問題