sql >> Databasteknik >  >> RDS >> Oracle

Hur fixar man Ora-01427 enkelrads underfråga returnerar mer än en rad i urval?

Använd följande fråga:

SELECT E.I_EmpID AS EMPID,
       E.I_EMPCODE AS EMPCODE,
       E.I_EmpName AS EMPNAME,
       REPLACE(TO_CHAR(A.I_REQDATE, 'DD-Mon-YYYY'), ' ', '') AS FROMDATE,
       REPLACE(TO_CHAR(A.I_ENDDATE, 'DD-Mon-YYYY'), ' ', '') AS TODATE,
       TO_CHAR(NOD) AS NOD,
       DECODE(A.I_DURATION,
              'FD',
              'FullDay',
              'FN',
              'ForeNoon',
              'AN',
              'AfterNoon') AS DURATION,
       L.I_LeaveType AS LEAVETYPE,
       REPLACE(TO_CHAR((SELECT max(C.I_WORKDATE)
                         FROM T_COMPENSATION C
                        WHERE C.I_COMPENSATEDDATE = A.I_REQDATE
                          AND C.I_EMPID = A.I_EMPID),
                       'DD-Mon-YYYY'),
               ' ',
               '') AS WORKDATE,
       A.I_REASON AS REASON,
       AP.I_REJECTREASON AS REJECTREASON
  FROM T_LEAVEAPPLY A
 INNER JOIN T_EMPLOYEE_MS E
    ON A.I_EMPID = E.I_EmpID
   AND UPPER(E.I_IsActive) = 'YES'
   AND A.I_STATUS = '1'
 INNER JOIN T_LeaveType_MS L
    ON A.I_LEAVETYPEID = L.I_LEAVETYPEID
  LEFT OUTER JOIN T_APPROVAL AP
    ON A.I_REQDATE = AP.I_REQDATE
   AND A.I_EMPID = AP.I_EMPID
   AND AP.I_APPROVALSTATUS = '1'
 WHERE E.I_EMPID <> '22'
 ORDER BY A.I_REQDATE DESC

Tricket är att tvinga den inre frågan att returnera endast en post genom att lägga till en aggregatfunktion (jag har använt max() här). Detta kommer att fungera perfekt när det gäller frågan, men ärligt talat borde OP undersöka varför den inre frågan returnerar flera poster genom att undersöka data. Är dessa flera poster verkligen relevanta affärsmässigt?



  1. Finns det en SELECT ... INTO OUTFILE-motsvarighet i SQL Server Management Studio?

  2. Jämföra PostgreSQL DigitalOcean prestanda och prissättning – ScaleGrid vs DigitalOcean Managed Databases

  3. Gruppering med ett ärendeutlåtande

  4. PostgreSQL lastbalansering och ProxySQL-förbättringar - ClusterControl 1.5