2015-01-28 1 views
0

У меня есть таблица курсов, как показано ниже, с до 600 курсов. Я хочу отсортировать имена столбцов для значений полей, которые не являются NULL. Я уверен, что приведенный ниже запрос может выполнить эту работу для нескольких полей. Я могу сделать это динамически, так что мне не нужно записывать все курсы в инструкции CASE-WHEN.Названия имен столбцов динамически запрашиваются с помощью оператора sql для значений столбцов, которые соответствуют определенному условию для конкретной записи.

TBL_COURSES

| СТУДЕНТИК | MATH101 | CHEM121 | ENG101 | PHY111 | CSC121 | | ----------- | --------- | --------- | -------- | ------- - | -------- | | 301 | NULL | 10 | NULL | 10 | NULL | | 402 | 75 | NULL | NULL | 10 | 75 | | 423 | 80 | 10 | NULL | 10 | 60 | | 404 | NULL | 10 | 100 | 10 | NULL | | 505 | NULL | 10 | NULL | 10 | 55 |

ответ

0

SQL> ВЫБРАТЬ studentId, (CASE WHEN MATH101 IS NOT NULL THEN 'MATH101' КОГДА CHEM121 IS NOT NULL THEN 'CHEM121' КОГДА ENG101 IS NOT NULL THEN 'ENG101' КОГДА PHY111 НЕ NULL THEN ' PHY111 ' КОГДА CSC121 НЕ ЯВЛЯЕТСЯ «CSC121» ELSE' ' END) AS registered_cursses FROM tbl_courses WHERE studentId = 402;

РЕЗУЛЬТАТ

| СТУДЕНТИК | ЗАРЕГИСТРИРОВАННЫЕ_COURSES | | ----------- | -------------------- | | 402 | MATH101 | | 402 | PHY111 | | 402 | CSC121 |

+0

My OUTPUT НЕ динамически генерируется, поэтому его нельзя использовать в ситуации, когда имеется много таблиц. Любая блестящая идея ??? – Nditah

Смежные вопросы