【问题标题】:ORA-01427 error in crystal report水晶报告中的 ORA-01427 错误
【发布时间】:2017-09-06 19:23:34
【问题描述】:

寻找错误的解决方法

ORA-01427 单行子查询返回多行

我正在编写此 SQL 代码。这是我的水晶报告中的一个命令,我已将错误范围缩小到。但是此代码中有多个子查询,我找不到解决此错误的最佳方法。我知道这种类型的错误通常与在子查询的 select 语句中使用“=”有关,我应该使用另一个,例如 IN、LIKE 等。任何建议都会有所帮助。

谢谢,

SELECT
       JREQ.HRORGANIZATION,
       JREQ.JOBREQUISITION                   AS "Req #",
        cmdPoolRef."Pool Req Ref"             AS "Candidate Pool",
        cmdDualPostingRef."Dual Posting Ref"  AS "Dual Posting Ref",
        DEPTNAME.DESCRIPTION                  AS "Department Name",
        JOB.DESCRIPTION                       AS "Job Title",
        JREQ.OPENDATE                         AS "Date Opened",
        CASE JREQ.STATUS
             WHEN 1 THEN 'Pending'
             WHEN 2 THEN 'Open'
             WHEN 3 THEN 'On Hold'
             WHEN 4 THEN 'Cancelled'
             WHEN 5 THEN 'Filled'
             WHEN 7 THEN 'Draft'
             WHEN 8 THEN 'Approval Requested'
             ELSE CONCAT('Unknown',JREQ.STATUS)
        END                                 AS "Req Status",
        cmdFTELimited."FTE Limted"          AS "FTE",
        JREQ.INITIALOPENINGS                AS "# of  Positions",
        JREQ.FILLEDOPENINGS                 AS "# of Positions Filled",
        DEPTNAME.SHORTDESCRIPTION           AS "Cost Center",
        JREQ.REASONFOROPENING               AS "Req Reason Code",
        cmdEmpReplacing."Replacement ID"    AS "Replacement ID",
        cmdEmpReplacing."Replacement Name"  AS "Replacement Name",
        JREQ."UNION"                        AS "Union",
        DEPT_LOCATION.DESCRIPTION           AS "Location",
        JREQ.SALARYSTRUCTURE                AS "Family",
        POS.SALARYSTRUCTUREGRADE            AS "Grade",
        TRIM(RECRUITER.PRESENTATIONNAMESNAPSHOT)  AS "Recruiter Name",
        TRIM(HIREMGR.PRESENTATIONNAMESNAPSHOT)    AS "Hiring Manager",
        cmdApptType."Appt Type"                   AS "Appointment Type",
        JREQ.CATEGORY                             AS "Category",
        cmdCandidateHired."Person Hired"          AS "Person Hired",
        cmdCandidateHired."Start Date"            AS "Start Date",
        cmdCandidateHired."Offer Amount"          AS "Offer Amount",
        VW.ENTITYORGUNIT
FROM LTMPROD.JOBREQUISITION JREQ
LEFT OUTER JOIN LTMPROD.HRORGANIZATIONUNIT DEPTNAME         ON   JREQ.HRORGANIZATIONUNIT = DEPTNAME.HRORGANIZATIONUNIT
LEFT OUTER JOIN LTMPROD.HRLOCATION DEPT_LOCATION            ON   JREQ.LOCATION = DEPT_LOCATION.HRLOCATION 
LEFT OUTER JOIN LTMPROD.EMPLOYEE RECRUITER                  ON   JREQ.RECRUITER = RECRUITER.EMPLOYEE 
LEFT OUTER JOIN LTMPROD.POSITION POS                        ON   JREQ.POSITION = POS.POSITION
LEFT OUTER JOIN LTMPROD.EMPLOYEE HIREMGR                    ON   JREQ.HIRINGMANAGER = HIREMGR.EMPLOYEE
LEFT OUTER JOIN LTMPROD.JOB                                 ON   POS.JOB = JOB.JOB
LEFT OUTER JOIN LTMPROD.XXX_ORGUNIT_ENTITY_VIEW VW          ON   JREQ.HRORGANIZATIONUNIT = VW.HRORGANIZATIONUNIT
LEFT OUTER JOIN (
                    SELECT TO_NUMBER(UFS.ALPHA)                               AS "ReplaceThisEmp",
                           UFS.UFSUNIQUEID,
                           REPLACETHISEMPLOYEE.EMPLOYEE                       AS "Replacement ID",
                           TRIM(REPLACETHISEMPLOYEE.PRESENTATIONNAMESNAPSHOT) AS "Replacement Name"
                    FROM LTMPROD.USERFIELD_STORAGE  UFS
                    LEFT OUTER JOIN LTMPROD.EMPLOYEE REPLACETHISEMPLOYEE      ON  TO_NUMBER(UFS.ALPHA) = REPLACETHISEMPLOYEE.EMPLOYEE
                    WHERE UFS.UFSCLASSNAME = 'JobRequisition'
                    AND UFS.UFSFIELDNAME = 'EmployeeReplacingID'
                )  cmdEmpReplacing        ON cmdEmpReplacing.UFSUNIQUEID = JREQ.UNIQUEID
LEFT OUTER JOIN (
                    SELECT JA.JOBREQUISITION,    
                           JA.EMPLOYMENTSTARTDATE                AS "Start Date",
                           JA.SALARY                             AS "Offer Amount",
                           TRIM(CAN.PRESENTATIONNAMESNAPSHOT)    AS "Person Hired"
                    FROM LTMPROD.JOBAPPLICATION JA              
                    LEFT OUTER JOIN LTMPROD.CANDIDATE CAN     ON CAN.CANDIDATE = JA.CANDIDATE
                    WHERE JA.SELECTIONPROCESS = 9  
                )   cmdCandidateHired       ON cmdCandidateHired.JOBREQUISITION = JREQ.JOBREQUISITION
LEFT OUTER JOIN (
                  SELECT UFS.ALPHA AS "Appt Type", UFS.UFSUNIQUEID
                  FROM LTMPROD.USERFIELD_STORAGE UFS
                  WHERE UFS.UFSCLASSNAME = 'JobRequisition'
                  AND UFS.UFSFIELDNAME = 'AppointmentType'
                )   cmdApptType            ON cmdApptType.UFSUNIQUEID = JREQ.UNIQUEID
LEFT OUTER JOIN (
                  SELECT UFS.ALPHA AS "Pool Req Ref", UFS.UFSUNIQUEID
                  FROM LTMPROD.USERFIELD_STORAGE UFS
                  WHERE UFS.UFSCLASSNAME = 'JobRequisition'
                  AND UFS.UFSFIELDNAME = 'PoolRequistionReference'
                )    cmdPoolRef            ON cmdPoolRef.UFSUNIQUEID = JREQ.UNIQUEID
LEFT OUTER JOIN (
                  SELECT UFS.ALPHA AS "Dual Posting Ref", UFS.UFSUNIQUEID
                  FROM LTMPROD.USERFIELD_STORAGE UFS
                  WHERE UFS.UFSCLASSNAME = 'JobRequisition'
                  AND UFS.UFSFIELDNAME = 'DualPostingReference'
                )    cmdDualPostingRef      ON cmdDualPostingRef.UFSUNIQUEID = JREQ.UNIQUEID
LEFT OUTER JOIN (
                  SELECT UF.ALPHA AS "FTE Limted",UF.UFSUNIQUEID
                  FROM LTMPROD.USERFIELD_STORAGE UF 
                  WHERE UF.UFSCLASSNAME = 'JobRequisition'
                  AND UF.UFSFIELDNAME = 'FTELimited'
                )    cmdFTELimited          ON cmdFTELimited.UFSUNIQUEID = JREQ.UNIQUEID

【问题讨论】:

  • 问题不在查询中,请参阅错误 ORA-01427 说 single-row subquery returns more than one row - 它应该是您在 selectwhere 部分中的某处使用的子查询,以及数据库期望的位置一个且只有一个值

标签: sql oracle crystal-reports report


【解决方案1】:

注意:Crystal Report 产生此错误的原因可能不是上述查询,而是您可能在报表中使用的其他查询,例如动态参数? 检查报告中使用的所有其他查询,正如您所提到的,它是 oracle 期望一条记录并获得更多记录的地方:通常是 (= (select...))

【讨论】:

  • 感谢您的回复。我在 SQL 开发人员(水晶之外)中运行了这段代码,并得到了相同的错误消息。 “ORA-01427: 单行子查询返回多行 01427. 00000 - “单行子查询返回多行” *原因:*Action:“
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多