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

Oracle trả về cùng một bí danh cho các trường hợp khác nhau trên lựa chọn

Giả sử truy vấn con của bạn đã nhận lại giá trị chính xác và bạn chỉ hỏi cách lấy cả hai giá trị 'article' trong cùng một cột, tất cả những gì bạn cần làm là chuyển truy vấn con thành when thứ hai kiểm tra trong case đầu tiên biểu thức, thay vì là cột riêng của nó:

SELECT
     tbl.parent,
     list.list_value,
     tbl.values_column,
     CASE
         WHEN list.list_value = 'Article' THEN tbl.values_column
         WHEN list.list_value = 'Paragraph' THEN (
             SELECT
                 values_column
             FROM
                 pro_table
             WHERE
                 pro_table.id_pro_table = tbl.parent
         )
     END AS article,
     CASE
         WHEN list.list_value = 'Paragraph' THEN tbl.values_column
     END AS paragraph
 FROM
     pro_table tbl 
     LEFT JOIN list ON list.id_list = tbl.id_t_list

Bạn có thể thay thế truy vấn con bằng một phép nối bên trái trở lại cùng một bảng và kết hợp các kết quả:

SELECT
     tbl.parent,
     list.list_value,
     tbl.values_column,
     COALESCE (
         CASE
             WHEN list.list_value = 'Article' THEN tbl.values_column
         END,
         tbl2.values_column
     ) AS article,
     CASE
         WHEN list.list_value = 'Paragraph' THEN tbl.values_column
     END AS paragraph
 FROM
     pro_table tbl 
     LEFT JOIN list ON list.id_list = tbl.id_t_list
     LEFT JOIN pro_table tbl2 ON tbl2.id_pro_table = tbl.parent

... nhưng đó là đưa ra một số giả định về hệ thống phân cấp, vì vậy bạn có thể cần thắt chặt việc liên kết dựa trên loại danh sách.

db <> fiddle với các mối quan hệ được phát minh giữa sáu hàng giống như bạn đã hiển thị, vì chúng tôi không có ID thực tế.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. XMLTABLE trong oracle - kiểu động XQuery không khớp:chuỗi singleton dự kiến ​​- có chuỗi nhiều mục

  2. Thêm INNER JOIN vào Truy vấn Với Truy vấn Con Với Tuyên bố Chọn Nội tuyến

  3. ORA-01017 Tên người dùng / Mật khẩu không hợp lệ khi kết nối với cơ sở dữ liệu 11g từ ứng dụng khách 9i

  4. Tham số ngày PL / SQL động với giá trị thời gian được giữ lại

  5. nhập tệp kết xuất vào oracle 11gr2 gặp lỗi