Trong postgres, bạn có thể truy vấn giá trị đầu tiên của một nhóm với DISTINCT ON
. Làm thế nào điều này có thể đạt được trong Oracle?Oracle tương đương với DISTINCT của Postgres ON?
Từ hướng dẫn postgres:
SELECT DISTINCT ON (expression [, ...]) giữ chỉ hàng đầu tiên của mỗi bộ hàng nơi các biểu thức được đánh giá để bình đẳng. DISTINCT ON biểu thức được diễn giải bằng cách sử dụng các quy tắc tương tự như đối với ORDER BY (xem ở trên). Lưu ý rằng "hàng đầu tiên" của mỗi bộ là không thể đoán trước trừ khi ORDER BY được sử dụng để đảm bảo rằng hàng mong muốn xuất hiện đầu tiên.
Ví dụ, đối với một bảng được đưa ra:
col1 | col2
------+------
A | AB
A | AD
A | BC
B | AN
B | BA
C | AC
C | CC
Tăng dần sắp xếp:
> select distinct on(col1) col1, col2 from tmp order by col1, col2 asc;
col1 | col2
------+------
A | AB
B | AN
C | AC
Giảm dần loại:
> select distinct on(col1) col1, col2 from tmp order by col1, col2 desc;
col1 | col2
------+------
A | BC
B | BA
C | CC
+1: Lệnh 'FIRST_VALUE()' biến thể là một mô phỏng khá thông minh của 'DISTINCT ON'. Tôi nên xây dựng nó vào [jOOQ] (http://www.jooq.org) –
Làm thế nào để áp dụng điều này nếu tôi muốn DISTINCT từ 2 trường và giá trị tương ứng từ tất cả các trường khác? – tumchaaditya