• ベストアンサー
  • すぐに回答を!

SQL最大値レコード抽出について

下記のようなテーブルがあったとしてフィールド1のコードごとにフィールド2が最大値のものを抽出したいのですが一回のSQLで可能ですか? フィールド1 フィールド2 abc 20070309 abc 20070302 abc 20070307 def 20070304 def 20070306 def 20070303 ・ ・ ・ 例: abc 20070309 def 20070306 ・ ・

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数1563
  • ありがとう数2

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

  • ベストアンサー
  • 回答No.1
  • bin-chan
  • ベストアンサー率33% (1403/4213)

一回で可能です。GROUP BY と MAX を用いてみてください。 select フィールド1, max(フィールド2) from hogehoge ←適宜変更してください。 group by フィールド1 ;

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • グループ化+最大値

    お世話になっております。GomiYasikiです。 以下のような場合で、フィールドAが同じ中のフィールドBが最大値のものを抽出する場合はどのようにすればよいのでしょうか? お手数ですが、宜しくお願い致します。 テーブル名:テーブルA フィールドA,フィールドB,フィールドC AAAAA,1,ABC AAAAA,2,XYZ BBBBB,1,ABC BBBBB,2,DEF CCCCC,1,AAA ↓結果 AAAAA,2,XYZ BBBBB,2,DEF CCCCC,1,AAA

  • [SQL]重複内容を持つデータから1件抽出かつ複数のカラムを表示したい

    [SQL]重複内容を持つデータから1件抽出かつ複数のカラムを表示したい 初めてお世話になります。 データベース種別はH2です。 参考:http://www.h2database.com/html/main.html 下記のようなテーブルAがあるとします。   ID  |  TAG  | ―――――+―――――|   1   |  abc   |   1   |  def   |   1   |  ghi   |   2   |  abc   |   2   |  ghi   |   3   |  abc   |   3   |  def   |   3   |  ghi   |   4   |  abc   | 上記テーブルAから下記例のような結果を得られるSQLを知りたいのです。   ID  |  TAG  | ―――――+―――――|   1   |  abc   |   2   |  abc   |   3   |  abc   |   4   |  abc   | 上記結果でなくとも、   ID  |  TAG  | ―――――+―――――|   1   |  def   |   2   |  ghi   |   3   |  def   |   4   |  abc   | であっても構いません。(TAG列のデータはどんな内容でもよいです。) 実現させたいのは、 (1)ID列が重複しない結果を表示させたい、 かつ (2)TAG列も表示させたい ということです。 これでイケるだろ!と思ってあえなく失敗したSQLは下記です; select distinct(ID), TAG from A 宜しくお願い致します。

  • Access 各レコードの中での最大フィールドを抽出したい

    Accessにつぎのようなテーブルがあります(例)。 各人の成績表 フィールド1:名前 フィールド2:1回目の得点 フィールド3:2回目の得点 フィールド4:3回目の得点 名前の重複はありません。 レコードごとに、フィールド2~4の最大値を抽出する方法を教えていただけると、たいへん幸せです。 どうぞ、よろしくお願いします。

  • 最大値を含むレコードの抽出

    お世話になります。 SQLでIN句やサブクエリではなく、HAVING句+MAX関数を使用して最大値を含むレコードを抽出することはできるのでしょうか。 id | name | value --------------- 1 | aaaa | 2000 2 | aaaa | 1000 3 | bbbb | 1000 上の表でいうとnameフィールドでグルーピングしてidの1と3が抽出対象になります。MySQLを使用しておりますが、 標準SQLでお願いしたいです。 よろしくどうぞ。

    • ベストアンサー
    • MySQL
  • SQL の抽出方法

    あるテーブルABC に項目aとbとc があるとします。 今、抽出の条件が 仮にa=1,b=2 として、 この条件で複数件のデータが抽出され その中からcが最大のデータ1件のみを抽出するとします。 このSQLを作成する場合、 どのような方法がありますでしょうか? select文で、1度cのmax値を求めないといけないでしょうか?

  • キーのフィールドが最大値の他フィールドのデータ抽出

    下記のようなテーブルがあったとします。 ----------------------  (1) | (2) | (3)  ----------------------  A | 3 | あ  A | 1 | い  A | 5 | う  B | 3 | え  B | 2 | お ---------------------- フィールド(1)がグループで、それぞれAグループ、 Bグループとします。 このとき、それぞれのグループ内のフィールド(2)が 最大のレコードのフィールド(3)データを抽出したいのですが、 どのようにすればよいでしょうか? 上記の例で言うと、 ----------------------  (1) | (2) | (3)  ----------------------  A | 5 | う  B | 3 | え ---------------------- という結果を得たいのですが・・・

  • SQL文について(片方のテーブルに存在しないレコード抽出)

    以下のような2つのテーブルがあったとして、 2つともに存在する「店コード」を抽出するのはSQLは分かるのですが、 片方に存在しない「店コード」(以下の例の場合、「2」)を抽出するSQLを 一文で書くにはどうすればいいのでしょうか? <店テーブル> 店コード 住所・・・(その他、基本情報) 1 aaa 2 bbb 3 ccc <販売テーブル> 店コード 販売品目・・・(その他、販売数など) 1 xxx 3 zzz

  • SQLでのレコードの抽出について。

    SQLでのレコードの抽出について。 ExcelのVBAを利用してOracleに接続し、必要なデータのみを抽出したいと考えています。 目的のレコードの抽出じたいには成功しているのですが、 他にも多数の処理を前後で行うのでなるべく高速に処理ができればと考えています。 そこでSQL、VBに詳しい方に作成したコードを見ていただき、もっと高速に処理ができるよう ご教授していただければと思います。 前置きが長くなりましたが、以下に作成したSQLと状況を記載します。 テーブル : t1会議マスタ フィールド: f11部門コード、f12会議NO、f13会議名、f14開催日、その他… テーブル2 : t2会議履歴 フィールド: f21部門コード、f22会議NO、f23出席者CD、その他… というテーブルがあり、ある出席者をもとに その出席者が出席した一番新しい会議の「会議名」「開催日」を取得したいのです。 そこでSQLを作成し、目的のレコードのみを表示するよう作成したのが以下のものです。 SELECT t1会議マスタ.f14開催日 t1会議マスタ.f13会議名 FROM t1会議マスタ INNER JOIN t2会議履歴 ON t1会議マスタ.f11部門コード = t2会議履歴.f21部門コード AND t1会議マスタ.f12会議NO = t2会議履歴.f22会議NO WHERE t1会議マスタ.f14開催日 IN ( SELECT MAX(t1会議マスタ.f14開催日) FROM t1会議マスタ INNER JOIN t2会議履歴 ON t1会議マスタ.f11部門コード = t2会議履歴.f21部門コード AND t1会議マスタ.f12会議NO = t2会議履歴.f22会議NO WHERE t2会議履歴.f23出席者CD = (変数)   AND t2会議履歴.f21部門コード = (???) ) GROUP BY t1会議マスタ.f14開催日, t1会議マスタ.f13会議名 以上です。 もっとシンプルかつ高速に行えればと思います(SQLで完全に絞り込まなくてももっと早い方法があればVBAなどで抽出してもかまいません)。 よろしくお願いいたします。

  • SQL分のWHERE句について

    SQLのWHERE句について ================================== ABC :入力値(2又は5バイトの可変) T.テーブル.フィールド:ABCが格納されているテーブル(格納すると同時に5桁になります。) 例:01(入力値)⇒01000(格納値) ================================== 参照時のWHERE句の作成の仕方を教えてください。 ※検索値が2桁の場合は、格納値5桁の前方2桁一致でHITさせます。  また5桁の場合は、格納値5桁の全一致です。 今考えているのでは、 IF ABC <> "" THEN IF LenB(ABC) = 2 THEN SQL_WHERE = SQL_WHERE & "AND (LEFT(T.テーブル.フィールド,2) = '" & ABC & "' )" ELSEIF SQL_WHERE = SQL_WHERE & "AND (T.テーブル.フィールド = '" & ABC & "')" END IF END IF です。 宜しくお願いします

  • 最大値の抽出

    今最大値を抽出するSQL文を考えているのですがうまくいきません。 例えば、Sampleテーブル count | num ------------- 1 | 11 3 | 12 2 | 13 9 | 14 6 | 15 のテーブルでcountが一番大きいnumを取り出したいのですが、どのようにしたらいいのでしょうか? この場合、countが一番多い9の num=14を取り出します。 よろしくお願い致します。