重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

いつも拝見させて頂いております。
さっそくですが、SQLでのソート方法について悩んでおりまして解
決方法または参考資料等がありましたらご教授願えますでしょうか。

ある2つのテーブルからそれぞれの異なったフィールドを参照して2
つのフィールドを1つのフィールドとして認識してソートをかけたい
のです。実際には各テーブルにあるKEYフィールドにてリンクをし
て、ソートの対象は各テーブルにあるDATEフィールドです。

テーブルA
 KEY  CHAR
 DATE CHAR

テーブルB
 KEY  CHAR
 DATE CHAR

実際のイメージとしては下記の様なイメージです。

テーブルA.KEY テーブルA.DATE テーブルB.DATE
AAA       20040101   
AAA       20040102   
AAA       20040102   
AAA                  20040102
AAA       20040103   

条件としては
1.テーブルAとテーブルBが同一の日付であった時はテーブルBの
  データを最後尾に持ってくる。
2.テーブルAとテーブルBのデータは別レコードになる様にする。


以上、このようなことができるかどうかわかりませんが、宜しくお願い致します。

A 回答 (3件)

select A.I_KEY as key-1


,a.I_DATE as date-1
,b.I_DATE as date-2
,case when a.I_DATE = b.I_DATE then b.I_DATE
when a.I_DATE <> b.I_DATE then a.I_DATE
end as date-w
from TAB_A A,TAB_B B
where a.I_KEY = b.I_KEY
order by date-w
    • good
    • 0

Select F_Key, F_Date


From
(
Select
/*+ Index(T_AAAAA Index_AAAAA) */
F_Key, F_Date, 1 As F_Index
From T_AAAAA
Union
Select
/*+ Index(T_BBBBB Index_BBBBB) */
F_Key, F_Date, 2 As F_Index
From T_BBBBB
)
Order By F_Key, F_Date, F_Index

こんな感じで出来ませんか?
    • good
    • 0

条件の確認ですが、


テーブルAとテーブルBを全部くっつけて、
・テーブルAのKEY
・テーブルAのDATE
・テーブルBのDATE
を抽出する。
並び替えは
・日付。ただし、同じ日付がある場合はテーブルAが優先
でよろしいでしょうか?
ちょっと作業用の項目も表示されてしまいますが、

select A.KEY KEY, A.DATE DATE1, Null DATE2,
A.DATE SORT_1, 1 SORT_2
from テーブルA A
union all
select B.KEY KEY, Null DATE, B.DATE DATE2,
B.DATE SORT_1, 2 SORT_2
from テーブルB B
order by SORT_1, SORT_2
でどうでしょう?実行環境がないので試せていません。無責任な回答でもうしわけないです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す