- ベストアンサー
ソートに関して(ACCESS)
教えて下さい。 あるテーブルに日付項目が2つ存在し、それら2つの項目を使って並び替え(昇順) をしたいと考えています。 《テーブル》 AAA 名前、日付1、日付2 山田,20130101, 山田,,20131201 山田,20130401, 結果として、 名前,日付X 山田,20130101 山田,20130401 山田20131201 という日付1と日付2がマージされた結果をソートするようなSQLができないかと考えて おります。 どのようなSQLを記述すれば良いか、教えて下さい。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
「日付1」と「日付2」の入力条件は、 まさか、両方とも入力されていて、なおかつ 両方とも違う、というような ことはありえないでしょうね。そのような 場合は「日付のマージ」なんてできませんが。 たぶん、質問の場合はどちらかに日付があり、フィールド を一つにまとめたい、というようことだろうと解釈します。 そこで、質問のテーブルの例では、 どちらかに日付がある。 なのですが、ついでに、 どちらかに日付がある。 どちらも空である。 どちらも日付あり、なおかつ同じ日付。 の三つの場合とすると、 SELECT AAA.名前, IIf(IsNull([日付1]),[日付2],[日付1]) AS 日付X FROM AAA ORDER BY IIf(IsNull([日付1]),[日付2],[日付1]); だけ、ですが。これは、 どちらかに日付がある。 日付を「昇順」に並べ替えをして表示。 に、対応したものなのですが、ついでに上記の 三つの場合にもあてはまります。
その他の回答 (1)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
SELECT T4.id, T4.名前, T4.日付1, T4.日付2, ChoiceData(Str([日付1]) & ";" & Str([日付2])) AS 日付x FROM T4; どちらか一方しか入力されていなければ、単純に文字列として足せば事足ります。双方ともに入力されているケースがあるのであれば、どちらかを選択する関数を作れば目的は達成されます。 Public Function ChoiceData(ByVal strData As String) As Date Dim strDatas() As String strDatas = Split(strData, ";") ChoiceData = IIf(strDatas(0) > strDatas(1), strDatas(0), strDatas(1)) End Function
お礼
piroin654様、ご回答ありがとうございます。 日付項目としては、どちからに日付があるでしたので、取得したい内容が できました! ありがとうございました!