#sql #oracle
#sql #Oracle
Вопрос:
Комментарии:
1. не уверен, почему изображение не появилось, пожалуйста, нажмите «введите описание изображения здесь», спасибо!
2. Вам лучше избегать изображений, предпочитая форматированный текст: текстовые данные позволяют людям создавать пример и пробовать свои ответы.
Ответ №1:
Один простой способ — выбрать каждый из ваших временных столбцов отдельно, а затем отобразить их вместе с UNION ALL
:
SELECT * FROM (
SELECT user_id, receive_time AS time, NULL AS user_message FROM table WHERE receive_time IS NOT NULL
UNION ALL
SELECT user_id, open_time, NULL FROM table WHERE open_time IS NOT NULL
UNION ALL
SELECT user_id, finish_time, user_message FROM table WHERE finish_time IS NOT NULL)
ORDER BY time, user_id
Ответ №2:
В зависимости от вашего правила заполнения и отображения user_message
запроса, возможно, потребуется изменить, но общим правилом здесь было бы получить все записи для каждого *_time
столбца и использовать union all
их для объединения
select *
from (
select user_id, receive_time AS time, null AS user_message
from yourtable
where receive_time is not null
union all
select user_id, open_time, null
from yourtable
where open_time is not null
union all
select user_id, finish_time, user_message
from yourtable
where finish_time is not null
)
order by time, user_id
С WHERE
помощью предложения мы не возвращаем строки, в которых определенный столбец времени пуст. Это, по-видимому, желательно из вашего выходного примера.
Комментарии:
1. когда я упорядочиваю по времени, он говорит «ORA-00904: «TIME»: недопустимый идентификатор 00904. 00000 — «%s: недопустимый идентификатор», независимо от верхнего / нижнего регистра или другого имени переменной. Я могу заказать по идентификатору пользователя, но я не могу заказать по идентификатору my_user_id, если я использую «выбрать идентификатор пользователя в качестве идентификатора my_user_id»
2. В моем скрипте нет идентификатора «THE_TIME». В любом случае, попробуйте обернуть его с
select * from( ... ) order by time, user_id
помощью 😉3. спасибо, Камиль, за быстрый ответ, я отредактировал приведенный выше комментарий, позвольте мне попробовать
4. Я соответствующим образом изменил свой ответ. Похоже, для этого Oracle нужен подзапрос 🙂