Có vẻ như bạn đã chỉ định tên cột dưới dấu ngoặc kép trong DDL của mình.
Oracle coi số nhận dạng dưới dấu ngoặc kép là phân biệt chữ hoa chữ thường, vì vậy việc tạo bảng có tên cột là "body" hoặc "year" sẽ không giải quyết nội dung hoặc năm trong truy vấn của bạn, vì khi bạn bỏ qua dấu ngoặc kép, nó sẽ coi là biến thể chữ hoa.
Vì vậy, khi bạn có cái này:
create table driver_case (registration varchar2(60),
make varchar2(60),
model varchar2(60),
gvw number,
"year" number,
"body" varchar2(60));
và sau đó cố gắng thực hiện
select year, body from driver_case
thì Oracle cố gắng tìm cột "YEAR", "BODY" (hãy nhớ rằng, không có số nhận dạng không có dấu ngoặc kép sẽ được chuyển thành chữ hoa) không giống với "year", "body" trong bảng của bạn.
Giải pháp của bạn?
- Không đề cập đến tên cột dưới dấu ngoặc kép trong DDL
- Nếu bạn bỏ qua điểm trên, thì bạn phải đề cập đến tên cột dưới dấu ngoặc kép trong tất cả các câu lệnh DML của bạn.
Tôi chứng minh điểm trên trong SQL Fiddle này