У меня нет ваших таблиц, поэтому я буду использовать образец схемы Скотта.
Отдельные отделы и задания:
SQL> select distinct deptno, job from emp;
DEPTNO JOB
---------- ---------
20 CLERK
30 SALESMAN
20 MANAGER
30 CLERK
10 PRESIDENT
30 MANAGER
10 CLERK
10 MANAGER
20 ANALYST
9 rows selected.
Мы бы хотели отсортировать данные по EMPNO
(что-то вроде вашего ID
):
SQL> select distinct deptno, job from emp order by empno;
select distinct deptno, job from emp order by empno
*
ERROR at line 1:
ORA-01791: not a SELECTed expression
SQL>
Это не сработает (как вы уже знаете). Но если вы используете подзапрос (или CTE), вы получите следующее:
SQL> with temp as
2 (select min(empno) id, deptno, job
3 from emp
4 group by deptno, job
5 order by 1 desc
6 )
7 select deptno, job
8 From temp
9 order by id desc;
DEPTNO JOB
---------- ---------
10 CLERK
30 CLERK
10 PRESIDENT
20 ANALYST
10 MANAGER
30 MANAGER
20 MANAGER
30 SALESMAN
20 CLERK
9 rows selected.
SQL>
, что означает, что ваш запрос может выглядеть следующим образом:
WITH temp
AS ( SELECT MIN (id) id,
dst_bnk_acnt_id,
dst_cust_id,
org_cust_id,
dst_pos_id,
pmt_typ_cd
FROM tb_cm_t_pmt_coll
WHERE org_pos_id = 8
OR dst_pos_id = 8
OR dst_bnk_acnt_id = 1
GROUP BY dst_bnk_acnt_id,
dst_cust_id,
org_cust_id,
dst_pos_id,
pmt_typ_cd)
SELECT dst_bnk_acnt_id,
dst_cust_id,
org_cust_id,
dst_pos_id,
pmt_typ_cd
FROM temp
ORDER BY id DESC;