После получения определения для таблицы, как показано ниже,
create TABLE TABLE_TEST(
LAST_NAME VARCHAR2(75 BYTE),
CDISPLAYNAME VARCHAR2(50 BYTE),
USER_STATUS NUMBER DEFAULT 1 --Can also be 0 (inactive) or 3 (System User)
);
Некоторые из фиктивных данных, вставленных в таблицу, как показано ниже:
select * from table_test;
LAST_NAME CDISPLAYNAME USER_STATUS
A T1 1
B T1 1
B1 T2 0
B2 T3 0
B3 T4 1
Когда я запускаю заданный вами запрос, который выОпубликовано выше:
select
case
when USER_STATUS = '0'
then '*INACTIVE* '|| LAST_NAME || ',' || CDISPLAYNAME
else LAST_NAME || ',' || CDISPLAYNAME
end as d, CID r
from TABLE_TEST
order by d asc;
Таблица не содержит столбец CID, поэтому он не работает.Таким образом, после удаления столбца CID,
select
case
when USER_STATUS = '0'
then '*INACTIVE* '|| LAST_NAME || ',' || CDISPLAYNAME
else LAST_NAME || ',' || CDISPLAYNAME
end as d
from TABLE_TEST
order by d asc;
Выходные данные:
D
*INACTIVE* B1,T2
*INACTIVE* B2,T3
A,T1
B,T1
B3,T4
Таким образом, измененный запрос:
WITH T as
(select case
when USER_STATUS = '0'
then '*INACTIVE* '|| LAST_NAME || ',' || CDISPLAYNAME
else LAST_NAME || ',' || CDISPLAYNAME
end as d, CDISPLAYNAME r
from TABLE_TEST
order by d asc)
select * from T order by d desc;
Итак, вывод:
D R
B3,T4 T4
B,T1 T1
A,T1 T1
*INACTIVE* B2,T3 T3
*INACTIVE* B1,T2 T2
Итак, все неактивные данные появляются наконец.