Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm cách nào để khắc phục truy vấn con một hàng Ora-01427 trả về nhiều hơn một hàng trong vùng chọn?

Sử dụng truy vấn sau:

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

Mẹo là buộc truy vấn bên trong chỉ trả về một bản ghi bằng cách thêm một hàm tổng hợp (tôi đã sử dụng hàm max () ở đây). Điều này sẽ hoạt động hoàn hảo khi có liên quan đến truy vấn, nhưng thành thật mà nói, OP nên điều tra lý do tại sao truy vấn bên trong trả về nhiều bản ghi bằng cách kiểm tra dữ liệu. Nhiều hồ sơ này có thực sự phù hợp với doanh nghiệp không?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để gọi một thủ tục được lưu trữ Oracle từ một tập lệnh VBA trong Excel?

  2. Làm thế nào để tách một chuỗi trong PL / SQL?

  3. Các câu hỏi hàng đầu về JAVA / JRE trong Ứng dụng Oracle

  4. có thể có trình tạo chuỗi chữ và số trong sql không

  5. Cập nhật bản vá quan trọng của Oracle - tháng 10 năm 2020