SQLで特定のカラムが最大値のレコードを取得する方法

このQ&Aのポイント
  • SQL SERVER 2000で特定のカラムが最大値のレコードのみを取得する方法について教えてください。データはコード、履歴番号、金額の3つのカラムからなります。
  • 例えば、コード毎に履歴番号が最大のレコードを取得したい場合、どのようなSQL文を書けばよいでしょうか?
  • 上記のデータ例において、コード毎に履歴番号が最大のレコードを取得すると、以下の結果が得られます。
回答を見る
  • ベストアンサー

SQL 特定のカラムが最大値のレコード取得

初心者です。SQL文で困っています。 どなたかご教授頂けたらと思います。 環境は、SQL SERVER 2000です。 特定のカラムが最大値のレコードのみ取得したいです。 たとえば、以下のようなデータがあるとします。 コード、履歴番号で主キーとします。 コード|履歴番号 |金額 0001 | 1 | 12000 0001 | 2 | 12001 0001 | 3 | 12002 0002 | 1 | 12000 0002 | 2 | 12001 0002 | 3 | 12002 0003 | 1 | 12000 0003 | 2 | 12001 この場合に、コード毎に履歴番号が最大のレコードのみを取得したいです。 理想の結果は以下になります。 コード|履歴番号 |金額 0001 | 3 | 12002 0002 | 3 | 12002 0003 | 2 | 12001 以上です。よろしくお願いいたします。

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

  • ベストアンサー
回答No.1

SQL Server 2000で動くかどうか分かりませんが、SQL例です。 select * from t1 as x where 履歴番号=(select max(履歴番号) from t1 where コード=x.コード) order by コード

take_PP
質問者

お礼

chukenkenkou様 ありがとうございます。 理想どおりの結果でばっちり動作いたしました。 感謝いたします。

関連するQ&A

  • 複数のカラムの中から最大値を取得するSQL

    MySQLで1コードの中で3つのカラムから最大値を 取得する事は可能でしょうか? id test1,test2,test3 1 5 7 6 だとすると、id=1の最大値は7と返してくれるSQL を書きたいです。IF文とか使わないと無理でしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • カラム情報取得方法

    テーブル内のカラム情報を取得するにはどのようなSQLを作ればよいのでしょうか? 欲しい情報は「カラム名・主キーかどうか・データ型・桁数・NULLを許容かどうか」の5つとなります。 SQL Server は2005と2008を使用していて、どちらでも扱えるSQLがあると助かります。 どうぞ宜しくお願いいたします。

  • SQLの抽出方法について

    あるテーブルに以下のカラムがあります。 店舗コード,売上日,金種コード,履歴番号,売上金額 プライマリキー(店舗コード~履歴番号) このテーブルには、店舗、売上日、金種コードごとの売上金額が履歴で管理されています。 ・データイメージ 0001,2004/04/01,01,0,1000 ・・・1行目 0001,2004/04/01,01,1,1100 ・・・2行目 0002,2004/04/01,02,0,500 ・・・3行目 0003,2004/04/01,03,0,2000 ・・・4行目 0003,2004/04/01,03,1,2010 ・・・5行目 0003,2004/04/01,03,2,1500 ・・・6行目 0001,2004/04/02,01,0,800 ・・・7行目      ・      ・ このデータから、売上日を指定して、 全店舗の金種ごとの履歴番号が最大のレコード(2,3,6行) を取得したいのですが、いいSQLが思いつかないので、ご存知の方教えてください。

  • 日付の最大値レコードを取得する方法について

    お世話になります。 SQLで日付の最大値を取得する方法です。 テーブルのデータ内容は以下のようになっています。 | 社員番号 | 社員名 | 日付 | 順序 | +---------+-------+-----------+-----+ | 100 | AAA | 2011/05/01 | 2 |   ← このレコードを取得したい +---------+-------+-----------+-----+ | 100 | AAA | 2011/05/01 | 1 | +---------+-------+-----------+-----+ | 100 | AAA | 2011/04/01 | 1 | +---------+-------+-----------+-----+ | 200 | BBB | 2011/04/01 | 2 |   ← このレコードを取得したい +---------+-------+-----------+-----+ | 200 | BBB | 2011/04/01 | 1 | +---------+-------+-----------+-----+ 取得したいレコードは、 社員ごとの最大日付の最大順序をもつレコードです。 (上記の1行目と4行目のレコードを取得したい) この場合、 下記のようなSQLを考えます。 --------------------------------- SELECT 社員番号, 社員名, 日付 FROM テーブル名 WHERE 社員番号 = 'xxx' AND 日付 = (SELECT MAX(日付) FROM テーブル名 ) AND 順序 = (SELECT MAX(順序) FROM テーブル名 ) ---------------------------------- 但し、上記の場合、 社員ごとに最大値レコードが取得できません。 どなたかレコード取得方法について 教えていただけないでしょうか? よろしくお願いいたします。

  • レコード集計のSQLについて

    お世話になります。 SQL Serverに関する質問です。 以下の内容を満たすSQLを作成したいのですが、 方法がわからず困っています。 (内容) *************************************************************** ・Aテーブル、Bテーブルには、以下のレコードが格納されています。 [Aテーブル] | key_code | code1 | code2 | code3 | money | person | ← カラム名 ---------------------------------------------- | 001 | 1 | 1 | 1 | 1000 | 10 | ---------------------------------------------- | 001 | 1 | 2 | 1 | 3000 | 10 | ---------------------------------------------- | 001 | 1 | 1 | 1 | 1000 | 10 | ---------------------------------------------- [Bテーブル] | key_code | cd1 | cd2 | cd3 | cd4 | cd5 | ・・・・・ | cd10 | ← カラム名 ------------------------------------------------------------ | 001 | 01 | 02 | 10 | 30 | 51 | ・・・・・ | 90 | ------------------------------------------------------------ | 002 | 01 | 02 | 03 | 10 | 40 | ・・・・・ | 55 | ------------------------------------------------------------ ・Aテーブルの key_code とBテーブルの key_code を関連付けて、  Bテーブルのcd1~cd10に格納されている各コード単位に集計した  Aテーブルのmoney及びpersonの値を取得したい。  例えば、 key_code = '000' でAテーブルとBテーブルを関連付けして、 Bテーブルのcd(1~10) = '10' で集計した Aテーブルの money と personの 値を求めたい。 **************************************************************** 初歩的な質問で申し訳ございませんが、 どなたかご教授願えませんでしょうか? よろしくお願いいたします。

  • 【アクセス】最大値を取得したい

    テーブルの番号フィールド(主キー、数値型)は1~100000くらいまでの番号が振られていますが 80%は空き番号です。 (例えば3の次は100のような) VBAで1~100までのなかで 最大値を取得したいのですがどうしたらよいでしょう? 1 2 3 の次が 100の場合 4を最大値として取得するコードがあれば教えてください! 宜しくお願い致します。

  • 10レコード目の主キーの値を取得したい場合

    Debug.Print Me.Form.CurrentRecord これで現在のレコードが取得でき、 Debug.Print Me.Form("主キー").Value これで現在のレコードの主キーの値が取得できるのですが、 例えば、10レコード目の主キーの値を取得したい場合は、 どのようなコードになるのでしょうか? よろしくお願いします。

  • SELECT、特定カラムの文字列があるレコード弾く

    SELECTする際、特定カラムの特定文字列がある場合に、そのレコードを弾いた結果を取得したいのですが、 どうすれば良いでしょうか? ■前提 ・「urlpathカラム」に、「/tokyo/officeedit/261」みたいなパスが1つ入っています ■知りたいこと ・SELECTする際、「urlpathカラム」の中で、指定パスを含むレコードは除く、という条件を付けたいのですが、どうすれば良いでしょうか? ■弾きたいパス例 ・「/tokyo/officeedit/★★」 ・「/tokyo/houseedit/★★」 ・「/site/login」

    • ベストアンサー
    • MySQL
  • レコード数をカウントしてから特定条件で検索は?

    主キー、副キーの組み合わせでレコード数をカウントして条件にあったものでかつ特定条件のレコードを出したいのですがどのようにしたらいいでしょうか? 例えば画像のようなテーブルとします。(テーブル名はTANAです) 棚コードが主キー、商品コードが副キーとしたときこの組み合わせでカウントしてレコード数が1つしかないものを抽出します。 select 棚コード, 商品コード from TANA group by 棚コード, 商品コード having count(*) = 1; をすれば 棚コードと商品コードの組み合わせで 「T1」&「OP123」 「T5」&「A7777」 が抽出できるかと思います。 この条件に加えて、担当者が「鈴木」か「山田」のものだけを拾い上げるにはどのようなSQLを書けばいいでしょうか? (例だと山田しか出てきませんが・・・) 詳しい方よろしくお願いいたします。Ora10gが対象です。

  • SQL 1カラムに複数の値

    SQLを使ってAccessにレコードを書き込みます。 Access側で「列車コード」というカラムに複数の値を持つ設定にしていますが、どんなコードを書けば良いですか。 INSERTを使うというところまでは理解しました。 列車コード 1 2 3 4,5 4,6 5 6 7,8 9 10 (他のカラムは省略) なんとなく作ってみたけどエラーになったコード "INSERT INTO 駅時刻リスト(列車コード) VALUES(1);"