Oracle 嵌套 Select returns ORA-00913 "too many values"
Oracle Nested Select returns ORA-00913 "too many values"
我在将枢轴 sql 嵌套到另一个 sql 时出现 ORA-00913: "too many values" 错误。
我该如何更正这个问题,或者是否有更简单的方法来编写这个,因为我需要另一个程序的 "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;
非常感谢!
您的嵌套查询 return 不止一条记录。
尝试这样的事情
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 ;
只需为旋转 table 添加一个别名,然后您就可以将所需字段添加到所选字段列表中:
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;
我在将枢轴 sql 嵌套到另一个 sql 时出现 ORA-00913: "too many values" 错误。
我该如何更正这个问题,或者是否有更简单的方法来编写这个,因为我需要另一个程序的 "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;
非常感谢!
您的嵌套查询 return 不止一条记录。 尝试这样的事情
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 ;
只需为旋转 table 添加一个别名,然后您就可以将所需字段添加到所选字段列表中:
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;