• ベストアンサー

sqlの条件文に関して

a   b   c   d ------------------------ A   2   be   3 A   9   re   44 A   1   qa   43 B   5   yt   11 C   2   uu   39 C   7   oi   55 このようなテーブルでaが同じだったらbの値が一番大きなものだけを 取得したいのですが、どのようにすればよろしいでしょうか? select a, b, c, d from X . . .

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

  • ベストアンサー
noname#57710
noname#57710
回答No.4

で、できた。 select x.a, x.b, x.c, x.d, x.w from x, (select a, max(b) b from x group by a) x2 where x.a = x2.a and x.b = x2.b; いかがでしょう…。 ただし、bの値が最大のものが複数あればその分出てきます。 つまり a   b   c   d    W ---------------------------------- C   7   xx   89   20 という値があればそれも出力してしまいます。 確認してみてください。

riseshinejp
質問者

お礼

ありがとうございます。 そのまま使わせていただきまして、 無事目的が達成できました。

その他の回答 (4)

  • 7marine
  • ベストアンサー率36% (59/160)
回答No.5

select * from X as X1 where exists ( select a from X group by a having a = X1.a and max(b) = X1.b) こんなのもアリかな?

riseshinejp
質問者

お礼

ありがとうございます。 いろいろなやり方があるのですね。 勉強になりました。

noname#22222
noname#22222
回答No.3

s_husky です。 ・GROUP BY 節の制限。 ・サブクエリーの制限。 以上の2つの制限を1文にて同時に破るSQL文を教えよ! ということですね! 判りません!

noname#57710
noname#57710
回答No.2

結果として a   b   c   d ------------------------ A   9   re   44 B   5   yt   11 C   7   oi   55 という値が取得したいのですか? また、プライマリキーとなる項目はないのですか? よろしくお願いいたします。

riseshinejp
質問者

補足

レスありがとうございます。 おっしゃるとおり a   b   c   d    W ---------------------------------- A   9   re   44   6 B   5   yt   11   3 C   7   oi   55   14 上記のような値を取得したいと考えております。 また、wがプライマリキーになります。 どうぞよろしくお願い致します。

noname#22222
noname#22222
回答No.1

質問者のテーブルをSQL Server に登録し、 SELECT a,MAX(b) FROM TABLE1 GROUP BY a; のSQL文を使ってデータを抽出すると、 A,9 B,5 C,7 を取得することが出来ました。 質問の主旨と違っていたら、ゴミとして無視して下さい。

riseshinejp
質問者

補足

レスありがとうございます。 他のフィールドの値も取得したいと考えております。 説明不足ですいません。

関連するQ&A