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

SQL không phải là một biểu thức GROUP BY với lỗi OracleSQL và InnerQuery

Như bạn có thể thấy trong tài liệu ORACLE

Điều này có nghĩa là nếu bạn chỉ nhóm theo o.CUSTOMER_ID , tất cả các trường khác trong danh sách chọn phải là các hàm tổng hợp (như COUNT, MAX, v.v.).

Trong trường hợp các trường lặp lại giá trị trong mỗi nhóm (như tên và họ), bạn nên đưa chúng vào mệnh đề GORUP BY.

Để bao gồm tổng số tiền đã chi tiêu, bạn có thể thêm THAM GIA TRÁI khác với SẢN PHẨM và chọn SUM(op.amount*p.price) không có truy vấn con.

Đó sẽ là

SELECT o.CUSTOMER_ID AS "ID", c.name AS "Name", c.SURNAME AS "Surname",
       SUM(op.AMOUNT*p.PRICE) AS "Money spent"
  FROM ORDERS o 
       LEFT JOIN CUSTOMERS c ON c.ID = o.CUSTOMER_ID 
       LEFT JOIN ORDERS_PRODUCTS op ON op.ORDER_ID = o.id
       LEFT JOIN PRODUCTS p ON p.id = op.PRODUCT_ID
 GROUP BY o.CUSTOMER_ID, c.name AS "Name", c.SURNAME
 ORDER BY o.CUSTOMER_ID, c.name AS "Name", c.SURNAME;

Hãy nhớ luôn xác định thứ tự sắp xếp của các truy vấn của bạn, nếu không nó sẽ không được xác định.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm hiểu lịch sử của các truy vấn SQL

  2. Oracle PL / SQL lấy IP v4 của máy chủ?

  3. Gọi một thủ tục Oracle PL / SQL trong Java bằng cách sử dụng CallableStatement với tham số boolean IN gây ra lỗi tiên tri PLS-00306:

  4. Sự cố về hiệu suất khi cập nhật bảng từ một bảng khác

  5. Bảng tạm thời cục bộ trong Oracle 10 (đối với phạm vi của Thủ tục được lưu trữ)