ベストアンサー ※ ChatGPTを利用し、要約された質問です(原文:SQLで行番号を表示する方法) SQLで行番号を表示する方法 2003/05/21 22:06 このQ&Aのポイント SQL Plusを使用してOracleのDBに接続し、行番号を表示する方法について教えてください。選択された行に1、2、3といった行番号を振る方法を、SQL Plusを使用してOracleのDBに接続する場合に教えてください。SQL PlusでOracleのDBに接続し、選択された行に1、2、3といった行番号を表示する方法について教えてください。 SQLで行番号を表示する方法 OracleのDBにSQL Plusで接続して、結果を表示します。 このとき、選択された行に1、2、3と番号を振る方法を教えてください。 Select ???, column1, column2 from table_name; ↑このSQLで、???の部分に何かを指定すると、↓こんな結果が出たと思います。 ??? column1 colmun2 ------------------------- 1 data11 data21 2 data12 data22 3 data13 data23 : : : このようにする方法があったと思うんですが、調べても見つかりませんでした。 ご存知の方がいたら教えてください。 質問の原文を閉じる 質問の原文を表示する みんなの回答 (1) 専門家の回答 質問者が選んだベストアンサー ベストアンサー selenity ベストアンサー率41% (324/772) 2003/05/21 23:10 回答No.1 「N件目からM件のレコードを取得する」場合の方法を利用します。 SELECT ROWNUM ???, column1, column2 FROM questions; の事でしょうか? 但し、order by 句があると、rownum の順序が変わってしまいます。 order by 句がある場合、 SELECT ROW_NUMBER() OVER(ORDER BY column1 DESC) ??? column1, column2 FROM questions; とします。 質問者 お礼 2003/05/22 10:06 有難う御座います。 ROWNUMでうまくいきました。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピューターデータベースその他(データベース) 関連するQ&A SQL-Server 6.5で最初の数行を抽出するには? SQL-Server 6.5で最初の数行を抽出するにはどのようにすればよろしいでしょうか? Oracleの場合、 SELECT * FROM TABLE_NAME WHERE ROWNUM <= 10; JETの場合、 SELECT TOP 10 * FROM TABLE_NAME; ですが、これをSQL-Serverで行う場合をご教授下さい。 SQL*PLUSで列幅変更したい。 こんにちわ。 いまORACLE9iを使用している者です。 SQL*PLUSで, つぎのようなSELECT文を発行しました。 「SELECT HOGEKBN AS ほげほげ区分 FROM HOGE_TABLE」 「HOGEKBN」は1桁のデータなので, 実行結果に列名である"ほげほげ区分"が表示されません。 これを表示したいと思い, 「 SELECT HOGEKBN AS ほげほげ区分 FROM HOGE_TABLE COLUMN ほげほげ区分 FORMAT A20 」 としたところ, COLUMN~の行で, "ORA-00933: SQLコマンドが正しく終了されていません。" というエラーメッセージが出てしまいます。 SQL*PLUSで列幅指定するにはどうすれば良いでしょうか? 教えてください。よろしくお願いします。 Oracle SQLの、where句内の条件文について教えてください。 Oracle SQLの、where句内の条件文について教えてください。 下記SQLの(1)と(2)の記述文を教えてください。 (1)例:owner = sys,admin ownerがsysまたは、adminを抽出 (2)例:column_name = '*aaa*' column_nameに「aaa」が含まれているデータ SELECT owner, table_name,column_name FROM all_tab_columns WHERE (1)(Ownerを複数指定) and (2)(column_nameに、●●が含まれるデータ) ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム プレインPHPでのSQL検索結果取得 初心者の質問ですみません。 フレームワークをずうっと使って来たのですが、フレームワークを使わずに検索をしようとしたところ、全く思うようにいかず困っています。 SELECT * FROM table のような単純なSQL文なのですが、PEARを使って $sql = "SELECT * FROM table"; $result = $conn->query($sql); としvar_dumpしてみると、期待していたSQLのデータが表示されません。 フレームワークを使っていると、この時点でどのフレームワークでもきれいに連想配列で表示できていました。 その辺が、フレームワークのフレームワークたるゆえんなのでしょうか..... ただ、結果は取得できているようで、 $count = $result->numRows(); としてやると正しい件数が表示されますし、カラム名を指定して while($rs = $result->fetchRow(DB_FETCHMODE_ASSOC)){ echo $rs['column_name']; } としてやるとカラムの値を表示します。 やりたいこととしては、検索結果を連想配列で取得し、foreachで行ごとに処理を行うことで、whileで$rs['column_name']を取得できることから、最悪でも力技で行ごとにカラム情報を全て取得して配列を作ってやることはできるとは思うのですが、もっと良い方法が無いはずがないと思います。 教えていただけますでしょうか。 よろしくお願いします。 SQL文について テーブルの結合について教えてください。 (DBはオラクルです) select * from table1,table2 where table1.カラム名=table2.カラム名; で、結合が出来ることは分かりました。 やりたいことはテーブルの結合と、ある期間のデータを持ってきたいのです。 select カラム名 from table1 where カラム名 between '20020213' and '20020218'; で期間を決めて引き出すやり方も分かっています。 一度に結合と期間を決めて引き出すやりかたってどうすればよいですか? それとも不可能ですか? 教えてください。 ORACLEで一番最初の結果だけを取る方法 使っているオラクルのバージョンは8iです。 SQL文を投げて一番上に来る行だけを取得したいのですが、どのようなSQL文を作ればよろしいのしょうか? 例えば下のSQLを投げたらテーブル名全て返ってきますが、結果の一番上の行だけを取得したいのです。 select TABLE_NAME from all_tables よろしくお願いします。 oracle10g(10.2.0.1.0)のsql*plusでの出力について 質問させていただきます。 sql*plusを使用して以下のような簡単なテーブルを作成しました。 create table XXX_TBL ( NUM NUMBER(3), NAME CHAR(5)); データをINSERT後、SELECT * FROM XXX_TBLで内容を表示したところ、 以下のように表示されました。 NUM NAME ---------- --------------- 1 test NAMEはCHAR(5)で作成したにもかかわらず、---の 数が15もあります。 oracle9iでは、CHAR(5)の場合の---の数は5でした。 上記例では、2項目しかないためsql*plusで出力しても 気になりませんが、項目数を増やし、またカラムサイズを 大きくした場合に、見づらくなってしまいます。 何らかのパラメータの設定を変更すればよいのかと思い、 いろいろと調べて見ましたがわかりませんでした。 ご教授願います。 ORACLE のSQL について おはようございます。 ORACLEのSQLについて教えてください。 GROUP BY で抽出されたデータの レコード数を把握するSQLはどのようにすればよいのでようか。 ********************** 例: SQL: SELECT TEST_CD FROM TABLE GROUP BY TEST_CD 結果: 01 02 03 04 05 ********************** この結果のレコード(5レコード)のSQL式はどのようになりますか? SELECTでの指定行からの指定行数文の取得 こんにちは。 OracleでSELECT文、一発で指定行から指定行数分のデータを取得するように指定できるのでしょうか? 例) SELECT * from tbl01; で、100行取得できる状態で25行目から30行分取得する OracleのSQLリファレンスを調べたのですが該当するようなものは 見当たりませんでした。 よろしくお願いします。 行番号を取得するには? SELECT文一回で行番号を取得したいのですが うまい方法が見つかりません、 もしよい案があれば教えてください。 SELECT 行番号,FIELD FROM TABLE_A やりたいことは 最終的にCASE文を使って 例えば5行目だけNULLにしたりしたいんです。 acsessのSQLでフィールド名と説明(コメント)を取得する方法 AcsessのSQLでフィールド名と説明(コメント)を取得する方法はありますでしょうか? オラクルでしたら SELECT [COLUMN_NAME], [RTRIM(COMMENTS)] FROM テーブル名 で取得できる様ですが、Acsessはだめでした。 よろしくお願いいたします。 SQLのテーブルの特定カラムでループ検索? 説明が苦手でご迷惑をおかけします。 [denwa_table] id name telno 1 田中 080888866XX 2 山田 090999988XX 3 佐藤 050333366XX このようなテーブルがあり、 別で取得した 「0125815846584123584090999988XX3254158912_3546842」 のような文字列にID何番の人の電話番号が含まれているか 検索するPHPを作成しています。 初心者なので、いろいろわからないのですが、 特に理解できていないのが複数行の配列の操作です。 $sql = "select telno from denwa_table"; 電話番号部分のカラムだけをとってきてとかやればいいのでしょうか? 検索する部分は strstr($data,$data2)を使ったらできそうですが、SQLからとってきた番号の配列をどうやってループさせたらいいのでしょうか? わからないことだらけなのですがよろしくお願いします。 AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム SQLについてアドバイスください。 USER_TAB_COLUMNSから入力したテーブル名で構造を抽出し SQL文を作成出来るものを作ろうとしています。 80%までうまく行くのですが、SELECT文でフィールドをカンマ付けで置いていく 所で最後のフィールドに来た時カンマが付加されてしまいます。 これを最後のフィールドに来た時カンマが付加されないでスペースで置くように したいのですが。。 set pagesize 0 set linesize 1000 set trimspool on set feedback off set verify off ACCEPT TABLE CHAR PROMPT 'TABLE NAME:' set termout off spool C:\TEST_csv.sql SELECT 'SELECT ' FROM DUAL; SELECT COLUMN_NAME || ',' FROM USER_TAB_COLUMNS WHERE TABLE_NAME = UPPER( '&TABLE' ) ORDER BY COLUMN_ID; SELECT 'FROM DUAL' FROM DUAL; SPOOL OFF DB2の行指定検索SQLについて select * from table where col1='X' order by col2; のようなselect文のXX行目~YYY行目の結果を返したい場合のSQLは、どのように作成すればよいのでしょうか?散々調べましたが、回答が見当たりませんでした。 どなたかご存知のかたいらっしゃいましたらご教授ください。 SQL*PLUSでの分秒までの表示の仕方 お世話になっております。 Oracle SQL*PLUSでデータを打ち込んでいるところなのですが、 表示の仕方で分からないところがあるので、 どなたか教えていただけないでしょうか? date型で指定して日付カラムを作ったところに TO_DATE('2009-01-02 10:00:10','YYYY-MM-DD HH24:MI:SS'), と入力したのですが、select文でデータを検索したところ DATE -------- 09-01-02 と返ってきました。これを分、秒まで表示させるには どうしたらよいでしょうか?? よろしくお願いいたします。 SQL文 テーブルの作成方法について 以下のようなTABLE1からTABLE2というテーブルを作成したいと考えております。 元テーブル(TABLE1)は、IDという項目がキーとなってデータが入っており、NAME1とNAME2という項目があります。 (NAME1は必ず値が入っていますが、NAME2は値が入っていない場合もあります) 加工後のテーブル(TABLE2)で、NAME1とNAME2の値を結合した形で結果を出力したいと考えております。 (新たに作成したNAMEカラムは、必ずしもユニークになっているとは限りません。NAMEとIDを組み合わせるとユニークになります) ---------------------------------------------------- ■ TABLE1 ID NAME1 NAME1_CATE NAME2 NAME2_CATE ---------------------------------------------------- 001 鈴木 A 山田 B 002 山本 A 003 佐藤 A 高橋 B ---------------------------------------------------- ---------------------------------------------------- ■ TABLE2 ID NAME NAME_CATE ---------------------------------------------------- 001 鈴木 A 001 山田 B 002 山本 A 003 佐藤 A 003 高橋 B ・・・ ---------------------------------------------------- いろいろ試していますが、どのようなSQL文を書いたらよいのか分かりません。 現状のSQL(エラーとなります) ====================================================================================== SELECT ID, NAME, NAME_CATE FROM (SELECT ID, NAME1 as NAME, NAME1_CATE as NAME_CATE FROM TABLE1 WHERE NAME1<>NULL) JOIN (SELECT ID, NAME2 as NAME, NAME2_CATE as NAME_CATE FROM TABLE1 WHERE NAME2<>NULL) ====================================================================================== 初歩的な質問になるかと思ってしまうかと思いますが、よろしくお願いいたします。 動的SQLのfetch 動的SQLのfetch やりたいこととしては、下記の(1)のような動的SQLをfetchなりforなりで まわしたいのですがどうしたらいいのでしょうか? よろしくお願いします。 for c_rec in (select table_name from user_tables) loop v_sql := 'select * from '||rowtbl.table_name; ・・・(1) ~ 省略 ~ end loop; 重複した行と、重複していない行をわけて出力したい。 お世話になります。Oracle9iで、 タイトル通りですが、一つの表から 重複したレコード・重複していないレコード を出力したいのですが、「こうかな?」と思った SELECT文が30分ちかく返ってきません(^^; 他に方法があれば教えて頂きたく質問致しました。 よろしくご教授下さい! (以下のSQLで、重複した行は"exists"で、 重複していない行は"not exists"もしくは "having count(*) = 1"でできるかな? と思ってましたが・・・) テーブル名:結果 キー項目(とみなすカラム):番号・名称・年月日 出力したい項目:結果.データ・もしくは結果.* --データが複数 select a.番号,a.名称,a.年月日,a.データ from 結果 a where exists --キーの重複SELECT ( select 番号,名称,年月日,count(*) from 結果 j where j.年月日 >= '1992/04/01' and j.年月日 <= '1993/03/31' and a.番号= j.番号 and a.名称= j.名称 and a.年月日 = j.年月日 group by j.番号,j.名称,j.年月日 having count(*) > 1 ) SQLの書き方 電話番号がcsvファイルに000-0000-0000 という形で たくさん入っています。これをアクセスのフォームを使って 読み込んで、オラクルサーバーとつなげ、SQLを発行しています。 DB上には電話番後はtel1 000 tel2 0000 tel3 0000 というように、フィールドが分かれてハイフンなしで入っています。 これを抜くためにはどのようなSQLをかいたらいいのでしょうか? 苦し紛れに書いてみたSQLは select telno1_1||'-'||telno1_2||'-'||telno1_3 as TEL1,* from DB where TEL1 = '" & n1 & "'" というものです。 n1にはcsvから読み込んだ電話番号が000-0000-0000の形で入っています。 どなたか教えてください。 宜しくお願いします。 1レコードのデータを複数行に分け通し番号を付ける Access2010にて、1レコードのデータを複数行に分け、追番毎に通し番号を付ける方法がわからず困っています。 テーブル1の様に、1レコードにはデータ格納するカラムが4つしかなく、同じ追番でデータが5個以上ある場合は、次のレコードに同じ追番を入力して5個目以降のデータを格納しているテーブルがあります。 テーブル1 追番 カラム1 カラム2 カラム3 カラム4 1 データ1 2 データ1 データ2 データ3 データ4 2 データ5 データ6 データ7 3 データ1 4 データ1 ・ ・ ・ これをテーブル2の様に1レコードにデータ1個づつ格納し、追番毎の番号を振りたいと思います。 テーブル2 追番 番号 データ 1 1 データ1 2 1 データ1 2 2 データ2 2 3 データ3 2 4 データ4 2 5 データ5 2 6 データ6 2 7 データ7 3 1 データ1 4 1 データ1 ・ ・ ・ クエリ1の様なユニオンクエリで近いかたち(テーブル3)にできたのですが、同じ追番で番号が1~4まで埋まったら、5以降の番号を降る方法が分かりません。 クエリ1 SELECT 追番, 1 AS 番号, カラム1 AS データ FROM テーブル1 WHERE カラム1 Is Not Null UNION ALL SELECT 追番, 2 AS 番号, カラム2 AS データ FROM テーブル1 WHERE カラム2 Is Not Null UNION ALL SELECT 追番, 3 AS 番号, カラム3 AS データ FROM テーブル1 WHERE カラム3 Is Not Null UNION ALL SELECT 追番, 4 AS 番号, カラム4 AS データ FROM テーブル1 WHERE カラム4 Is Not Null; テーブル3 追番 番号 データ 1 1 データ1 2 1 データ1 2 1 データ5 2 2 データ2 2 2 データ6 2 3 データ3 2 3 データ7 2 4 データ4 3 1 データ1 4 1 データ1 ・ ・ ・ よろしくお願いします。 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター データベース SQL ServerOraclePostgreSQLMySQLNoSQLその他(データベース) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
お礼
有難う御座います。 ROWNUMでうまくいきました。