2016-10-05 11 views
0

にそれらを作る私持って、次の表OracleのSQLは、同じ型を持つ一つのテーブルにみとめ列を選択してみとめ行

enter image description here

おかげ

+0

画像が表示されなかった理由がわからない場合は、「ここに画像の説明を入力してください」をクリックしてください。 –

+0

フォーマットされたテキストよりもイメージを避ける方がよいでしょう。テキストデータは、人々が例を作り、答えを試すことを可能にします。 – Aleksej

答えて

0

一つの簡単な方法は、別途お時間列のそれぞれを選択しています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 
1

01を入力して表示するルールに応じてクエリを変更する必要があるかもしれませんが、一般的なルールはここで、各​​列のためのすべてのレコードを取得し、我々が行を返さないWHERE句と一緒に

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 

それらを置くためにunion allを用いることであろう場所特定の時間列は空です。これはあなたの出力サンプルから望ましいと思われる。

+0

時間順に並べると「ORA-00904:TIME」:無効な識別子 00904. 00000 - 大文字小文字やその他の変数名に関係なく、 "%s:無効な識別子"です。 "select user_id as my_user_id"を使用すると私はmy_user_idで注文できません –

+0

私のスクリプトには "THE_TIME"という識別子がありません。 ) –

+0

クイック返信のためにKamilに感謝、私は上記のコメントを編集しました。私はそれを試してみましょう –

関連する問題