• ベストアンサー

oracleのテーブルデータの列を昇順にしたい

 初めて利用するのでうまく説明できていないと思いますが、よろしくお願いします。  Microsoft Access(以下Access)にMicrosoft Excelのデータを取り込み,さらにAccessからoracle(9i)へエクスポートしたとき、列が正しい昇順になりません。  列には数値型1~80が入力されていますが、ソートにすると1,12,15,16…というように10の位の数字だけで判断(!?)されてしまいます。また行がとんでいたりもします。  これを正しく昇順に並べ替えるにはどうしたらよいでしょうか? なにぶん初心者な者で(小学生に教えるかんじで)分かりやすく教えてください。(^。^;)>

  • m23
  • お礼率100% (12/12)

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

  • ベストアンサー
  • geso775
  • ベストアンサー率29% (15/51)
回答No.3

こんばんわ。 データベースのインポート時に順番は関係ありません。 sqlでselect時にorder by 句を指定して希望順に並び替えます。 select field1, field2 from tablename order by ・・ >列には数値型1~80が入力されていますが、ソートにすると1,12,15,16…というように10の位の数字だけで判断(!?)されてしまいます。また行がとんでいたりもします。 そのフィールドの属性がcharではありませんか? 属性を数値型に戻す、もしくはsqlの関数で対応するなどすればよいと思います。

m23
質問者

お礼

回答ありがとうございます。 早速試してみます。

その他の回答 (2)

回答No.2

EXCELデータをACCESSに取り込むときに、数値型でなくテキスト型で取り込んでいないですか?

m23
質問者

お礼

回答ありがとうございます。 取り込んだ後にAccessで数値型に直したのですが、それではダメですか?

回答No.1

とりあえず、質問のカテゴリを変える事をお勧めします。 さすがに JavaScript のカテゴリーで Oracle は、 いくらプログラミングの処でもあまりプログラムは詳しくない人が多いかと・・・。 せめて、プログラミング - その他(プログラミング) のカテゴリーにするか コンピューター [技術者向け] - データベース - Oracle のカテゴリーにしましょう。 で、 >1,12,15,16…というように10の位の数字だけで判断 これは、数値でなく数字として扱われています。 数字としては正しい昇順のソートです。 1と12ですが、まず一桁目として左からいずれも1なので同じと扱われ左から二桁目は1にはデータなしで12には2がありデータなしの方が昇順で先と扱われている訳です。 詳しくは覚えていないので改めて調べるなり他の方の回答を待つべきですが、 うろ覚えの知識では、 確か明示的に数値としての昇順とか単項目でのソート指定でないと文字(数字)としてのソート(昇順)処理をした様な気がしますが、 その辺を気にしながら、 エクスポートがまず数値として行われているのか? oracle側の項目は現在も数値となっているか? ソートの指定の仕方はどの様な規則になっているのか? を調べられるのも良いかと・・・。 まぁ1番はとにかくカテゴリーを変えて改めて質問される事かもしれませんが・・・。 一応、oracleもAccessも経験あるのですが ちょっと覚えていなくて申し訳ございません。

m23
質問者

お礼

回答ありがとうごさいます。 わたしもカテゴリーについては悩みました(^。^;)> ご指摘通りに質問しなおします!

関連するQ&A

  • No.2 oracleのテーブルデータの列を昇順にしたい

     カテゴリー「コンピュータ(技術者向け)」→「プログラミング」→「javascript」で同じ質問をしたものです。  カテゴリーを間違えているとのご指摘があったので改めて質問します。  Microsoft Access(以下Access)にMicrosoft Excelのデータを取り込み,さらにAccessからoracle(9i)へエクスポートしたとき、列が正しい昇順になりません。  列には数値型1~80が入力されていますが、ソートにすると1,12,15,16…というように10の位の数字だけで判断(!?)されてしまいます。また行がとんでいたりもします。  これを正しく昇順に並べ替えるにはどうしたらよいでしょうか? なにぶん初心者な者で(小学生に教えるかんじで)分かりやすく教えてください。(^。^;)>

  • excel VBA の条件をつけての列ごと並び替える方法がわかりません。

    excel VBA を最近学び始めたのですが、 ソートで、 4 8 3 1 7 8 8 2 8 9 6 2 5 1      ↓ 1 3 4 7 8 8 8 6 9 2 2 8 5 1      ↓ 1 3 4 7 8 8 8 6 9 2 2 1 5 8 と並び替えるソートのVBAがわかりません。一回目のソートで1行目を基準に列ごと昇順?に並び替え、二回目のソートで1行目の昇順を満たしながら二行目の数字を基準に列ごと昇順にソートしたいのです。 検索をかけて、バブルソートのVBAなどを見てみましたが、難しくて理解できません。(この前こそ、「かんたんプログラミング EXCEL VBA」を読んだ知識レベルです。) 昨日の18時からがんばっているのですが、一向にわからないです。。 お時間ありましたら、どなたか教えていただけないでしょうか?  

  • DataGridViewの昇順降順。

    再びお世話になります。 VB2005で表題の件ご教授願います。 作成した表でカラムスヘッダーをクリックすることによりソートは可能状態です。しかし、数値データを表示させていていて昇順、降順とも文字列としの結果で数値の大小でソートされません。 プロパティでColumnsからCellStyleビルダのFormatを数字に選択しても結果はかわりません。 以上よろしくお願いします。

  • excel VBA de で、昇順で列ごと入れ換える方法がわかりません。

    下記のようなソートをVBAで行いたいのですがわかりません。 5 6 3 8 5 5 8 4 6 1 1 5          ↓ 3 5 5 5 6 8 6 8 1 5 4 1     ↓ 3 5 5 5 6 8 6 1 5 8 4 1 一回目のソートで、1行目を基準に列ごと昇順に入れ換え、二回目のソートで一回目の条件を満たしたまま二行目を基準に列ごとソートしたいのです。 最近VBAを勉強し始め、「かんたんプログラミング EXCEL VBA」という書籍を読んだ知識レベルのため、自分で検索してソートの方法を学んでもわかりません。今日は、18時からパソコンに向かい、結局こんな時間になってしまいました。。。 お時間ありましたら、どなたか教えていただけないでしょうか?

  • perlで先頭の数値をみて昇順にならびかえたい。

    perlで先頭の数値をみて昇順にならびかえたい。 以下のようなデータの先頭の二桁の数値をみて、昇順に行ごと並び替えをしたいです。 sort を使えば簡単にできるのでしょうか? perlをはじめたばかりでよくわかりません。 ぜひ詳しく教えてください。お願いします

  • アクセスからオラクルへテーブルをエクスポートするVBAコードは?

    バックアップとして、アクセスからオラクルへテーブルをエクスポートします。その際のアクセスVBAのコードがわかりません。 SQLで行おうとしたらフィールドが120ほどありコードが軽く千行を超えてしまったためあきらめました。 流れとしては、mdb内にオラクルテーブルをコピーして→mdbからオラクルへテーブルをエクスポートして→テーブルのリンクを削除する、と考えています。 また、もしSQLで簡潔に上記作業を行える書き方があるのなら、それも合わせて回答をいただけるととても助かります。 よろしくお願いいたします

  • 昇順に並べ替え

    セルA1に50.1、セルB1にB、セルA2に49.9、セルB2にAと入力されています。 A列は、小数点第一位を四捨五入するので両方とも50と表示されています。 A列が同じ(この場合は50)時は、B列は昇順に並べたいです。 VBAで並び替えすると、数字は50.1と49.9なので1行目と2行目が入れ替わりません。 セルに表示されている数字での並び替えはどうしたら良いのでしょうか?

  • ACCESSのテーブルの行と列を入れ替えたい

    Access2000を使っているのですが、テーブルの行と列を入れ替えて、Excelへエクスポートを試みています。 しかし、Excelへのエクスポートのやり方は解るのですが、テーブルの行と列を入れ替えるやり方が解りません。 具体的には ID| 年月 |用件 01|2005/03|aaaa 02|2005/04|bbbb 03|2005/05|cccc とあるのもを ID  01 02 03 年月 2005/03 2005/04 2005/05 用件 aaaa bbbb cccc というふうに変換したいです。 よろしくお願いします。

  • オラクルについて教えてください。

    ORACLEをデーターベースとして、MICROSOFTACCESSを使ってフォームやレポートを作ろうと考えています。 ACCESSではフォームのコマンドボタンなどからVBAを入力しなくとも一般マクロで様々な処理をすることができると思います。  しかし、そうするとORACLEの下記の特徴は実現されなくなるのでしょうか?またレコードソースにせず、フォームを非連結にすれば実現可能なのでしょうか?その場合、どんな感じの手順になるのでしょうか? 特徴 (1)必要なレコードのみを抽出したあとクライアントにデータを送信 (2)バックアップの最中も滞りなくデータベースを稼働 (3)完全な行レベルロック (4)マルチバージョニング読み取り一貫性 (5)ACCESSの約43億倍のデータを扱うことが可能 (6)ACCESSのようにファイル単位ではなく、表などのオブジェクト単位はもちろん、表の行や列単位にまでアクセス制御

  • 昇順にならなくて困っています。

    お世話になります。 前任者が作成したexcel97の住所録、 左からコード(半角数字8桁)、名前、住所、電話・・・・ という見出し行のある表を引き継いだのですが、 コードを並べ替えようとしたところ、 昇順にならないのです。 コードの列のセル表示形式は「標準」になっています。 どのような原因が考えられるでしょうか。 よろしくお願いいたします。

専門家に質問してみよう