Я пытаюсь настроить двоичный столбец, показывающий, зарегистрировался ли студент на семестр S1 или S2.
Если значение равно 0, создается вторая строка. Можно ли ограничиться одной строкой для каждой записи?
select A.ID BSU_ID,
A.person_uid BAN_ID,
A.NAME STU_NAME,
B.STUDENT_CLASSIFICATION_DESC BSU_Class,
A.ACADEMIC_YEAR YEAR,
A.ACADEMIC_PERIOD TERM,
case when A.SUB_ACADEMIC_PERIOD in ('S1') then 1 else 0 end as S1_Enroll,
case when A.SUB_ACADEMIC_PERIOD in ('S2') then 1 else 0 end as S2_Enroll
from odsmgr.student_course A,
odsmgr.student B
where a.person_uid = b.person_uid
and A.id = b.id
and A.name = b.name
and A.academic_period = '201950'
and B.academic_period = '201950'
and A.COURSE_BILLING_CREDITS >0.0
and A.registration_status is not null
order by 1
Пример вывода (некоторые столбцы удалены для краткости):
|BSU_ID |STU_NAME |BSU_CLASS |S1_ENROLL |S2_ENROLL
|999 |Michele M |Non-Degree |1 |0
|999 |Michele M |Non-Degree |0 |1
|999 |Michele M |Non-Degree |1 |0
|999 |Michele M |Non-Degree |0 |1
покажите ваш образец вывода
Вот пример моего вывода. Я пытаюсь получить одну строку на человека:
Спасибо Барбарос Ожан за редактирование.
использовать row_number()
select * from ( select
A.ID BSU_ID,
A.person_uid BAN_ID,
A.NAME STU_NAME,
B.STUDENT_CLASSIFICATION_DESC BSU_Class,
A.ACADEMIC_YEAR YEAR,
A.ACADEMIC_PERIOD TERM,
case when A.SUB_ACADEMIC_PERIOD in ('S1') then 1 else 0 end as S1_Enroll,
case when A.SUB_ACADEMIC_PERIOD in ('S2') then 1 else 0 end as S2_Enroll,
row_number() over(partition by A.person_uid order by A.ACADEMIC_PERIOD ) rn
from odsmgr.student_course A join
odsmgr.student B
on
a.person_uid = b.person_uid
and A.id = b.id
and A.name = b.name
and A.academic_period = '201950'
and B.academic_period = '201950'
where
A.COURSE_BILLING_CREDITS >0.0
and A.registration_status is not null
) cte where rn=1
Спасибо за идею, но я получил ошибку: Для этого подключения разрешены только запросы DML/SQL.
@Lyndey, проверь сейчас
Вторая строка НЕ создается. Эта строка будет существовать независимо от того, включите ли вы одно из этих выражений
CASE
.