• ベストアンサー

ソートに関して(ACCESS)

教えて下さい。 あるテーブルに日付項目が2つ存在し、それら2つの項目を使って並び替え(昇順) をしたいと考えています。 《テーブル》  AAA 名前、日付1、日付2 山田,20130101, 山田,,20131201 山田,20130401, 結果として、 名前,日付X 山田,20130101 山田,20130401 山田20131201 という日付1と日付2がマージされた結果をソートするようなSQLができないかと考えて おります。 どのようなSQLを記述すれば良いか、教えて下さい。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

「日付1」と「日付2」の入力条件は、 まさか、両方とも入力されていて、なおかつ 両方とも違う、というような ことはありえないでしょうね。そのような 場合は「日付のマージ」なんてできませんが。 たぶん、質問の場合はどちらかに日付があり、フィールド を一つにまとめたい、というようことだろうと解釈します。 そこで、質問のテーブルの例では、 どちらかに日付がある。 なのですが、ついでに、 どちらかに日付がある。 どちらも空である。 どちらも日付あり、なおかつ同じ日付。 の三つの場合とすると、 SELECT AAA.名前, IIf(IsNull([日付1]),[日付2],[日付1]) AS 日付X FROM AAA ORDER BY IIf(IsNull([日付1]),[日付2],[日付1]); だけ、ですが。これは、 どちらかに日付がある。 日付を「昇順」に並べ替えをして表示。 に、対応したものなのですが、ついでに上記の 三つの場合にもあてはまります。

asamix_000
質問者

お礼

piroin654様、ご回答ありがとうございます。 日付項目としては、どちからに日付があるでしたので、取得したい内容が できました! ありがとうございました!

その他の回答 (1)

回答No.1

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

関連するQ&A

  • 検索結果の再ソートを試みる。

    項番 商品番号 生産日 賞味期限 A B C D E 1 1 200407 200507 2 1 200307 200407 3 2 200404 200504 4 3 200406 200407 5 3 200405 200406 6 3 200404 200405 上記のテーブルがあったとして、以下の処理を実現するSQLを考えます。 1. 上記のものを、商品番号の昇順・生産日の降順(最新)でソートし、 商品番号毎に生産日が最新のものを抽出します (期待される結果:項番3、4、1の順で3つ抽出) 2. 取得したのを賞味期限の昇順にソートします ※項目は、項番商品番号生産日賞味期限の他にもABCDE……と存在するものとします。 カーソルオープン時に上記1、2を満たす事が条件です。 上記SQLの記述について、どなたか助言おねがいします。

  • 集まり単位?でのソート

    FreeBSDに PostgreSQL7.4.6 + Apache + php4.3.10で色々と試していますが データソートのSQLについて悩んでいます 【テーブル(test)】 code name 1001 aaa 1002 bbb 2001 ccc 2002 ddd 3001 eee 4001 fff 【希望】 codeの4桁目基本にグループわけし、 各グループ単位で希望の順番(1,3,4,2)に並べたい グループ内は残り3桁の昇順で並べたい 【希望結果】 1001 aaa 1002 bbb 3001 eee 4001 fff 2001 ccc 2002 ddd

  • 掲示板のソートテクニックについて

    やりたいことは、PostgreSQL上にあるBBSテーブルの ・カラム「更新日付」の降順で親記事をソート ・カラム「返信順番」の昇順で子記事をソート して表示したいのですが、 どのようなロジックにすれば良いでしょうか? order by 更新日付 まではできたのですが、SQLだけではできそうに ありません。PHPでどのようにソートすれば できますでしょうか? ◆BBS出力イメージ 親2  子 1 2 3 親1  子 1  子 2

    • 締切済み
    • PHP
  • ListViewのソートについて

    SQL文では "ORDER BY [項目1] ASC, [項目2] ASC" というように並び替えの優先順位に沿ってソートする事が出来ますが、 ListViewで同じようにソートすることは可能でしょうか? 1つの項目のみを対象にしたソートなら出来るのですが… バージョンはVB.NETになります。 ご教授よろしくお願い致します。

  • 簡単なSQLに関して

    初歩的なSQLの質問で申し訳ありません。 教えて下さい。 下記のような、ある2つの異なる名前の同項目のテーブルが存在します。 《テーブル》 Aテーブル   社員番号、日付、内容 Bテーブル  社員番号、日付、内容  ※ 内容に関しては、AテーブルとBテーブルで全く違います。 これらの2つのテーブルをマージさせ、社員番号毎の内容毎、日付順に したいと考えています。 どのようなSQLを書けば良いでしょうか?? 尚、テーブルに関しては、諸事情であえて2つに分けてあります。 よろしくお願いします。

  • ACCESS クエリーでソートの不具合

    ACCESS2000 ACCESS クエリーでソートの不具合 Xテーブル 品コード 明細番号 昇順   昇順 作成したテーブルを見ると一部 111 01 111 02 111 03 222 01 333 01 111 04 <=分かれて表示されている。 データは3000件程あるのですが、アクセスの不具合? データはグループでは集計されるのでヌルが入っていたりはしません。 体験のある方いらしゃいますか?

  • ACCESSレポートのソートに関して

    ソートに関して教えて下さい。 現在、レポート出力である帳票を作成していますが、その際のソート順として ある項目の何文字目からをキーとしてソートしたいと考えています。 というのも、ある番号の先頭にアルファベットが存在し、アルファベット+連番という 形となっている為、そのアルファベットを無視して連番だけでソートしたいと考えています。 Oracle等のデータベースで、SQLを用いて取得するような時は、実現できるかと 思われますが、ACCESSのレポートではそのような機能は存在しますでしょうか? 初歩的な質問で申し訳ありませんが、教えて下さい。 よろしくお願いします。

  • SQL:Access:プライオリティが異なる2つのテーブルのマージ

    みなさん、こんばんは。 下記のような TBLmain、TBLsub という2つのテーブルをマージするにあたって、 主キーが同じであるレコードがそれぞれのテーブルに存在する場合には、 TBLmain を優先させ、TBLresult のような結果を得たいのですが、 どのように SQL を記述すればよいのでしょうか? DB は Access2000 を使用しています。 どうぞ、よろしくお願いいたします。 TBLmain 1 aaa 4 bbb 8 ccc TBLsub 1 XXX 2 TTT 3 YYY TBLresult 1 aaa 2 TTT 3 YYY 4 bbb 8 ccc

  • ACCESS2000 のテーブルが並べ替えできません

    おはようございます。 いつもありがとうございます。 ACCESSのテーブルを開くと、通常なら項目名を右クリックすると昇順、降順で並び替え ができますが そのメニューがグレーアウトでソートできないのです。 メニューバーの並べ替えの部分も同様にグレーアウトしています。 PC DELL DESKTOP OS WINDOWS2000 どうすれば並べ替えできるでしょうか?

  • アクセスのVBAについて

    アクセスのVBAでテーブルからウィザードでフォームを作成したのですが、その表示内容を昇順でソートしたいのですがどうすればよいのでしょうか?勝手に主キーでソートされてしまいます。違う値でソートしたいのですが・・・一応フォームLoadのイベントでSQLでテーブル内容をソートして値を代入していったのですがうまくいきません。 よろしくお願いいたします。

専門家に質問してみよう