アプリ版:「スタンプのみでお礼する」機能のリリースについて

SQLの作り方についてご教授下さい。
以下のようなDB及び条件があるとします。

・DB
----------------------
 No   フラグ   金額
  1    1     100
  2    0     200
  3    0     700
  3    1     500
  3    1     400
----------------------

・抽出条件
 フラグが1である物のみ抽出対象とします。
 同一Noについては、1件しか出力しません。その1件の決め方は
 フラグが1である事が前提で、金額が大きい物を取得します。

上記の抽出したい結果
------------------
 No   フラグ   金額
  1    1     100
  3    1     500
------------------

これを取得するSQLの作成方法が分かりません。
どのように作成すれば良いでしょうか?

A 回答 (3件)

select * from DB a


where 'フラグ'=1 and
   '金額'=(select max('金額') from DB b where a.No = b.No and 'フラグ'=1)

くらいでよいですか?
質問に書いてある以上のフィールドがあって、ちゃんとレコードを選択する必要があるなら、こうなると思います。
本当に、質問に書いてあるだけのフィールドで、金額の数字さえ解ればよいのであれば、No.1さんの解答の方が、シンプルですね。
    • good
    • 0
この回答へのお礼

上手く行きました。皆さんどうもありがとうございます。

お礼日時:2010/08/26 12:02

select No,フラグ,金額


from
(
select No,フラグ,金額,row_number() over(partition by No order by 金額 desc) R
from DB
where フラグ=1
)
where R=1
;
とか。
    • good
    • 0
この回答へのお礼

時間があれば、この方法も試してみたいと思います。ご回答ありがとうございます。

お礼日時:2010/08/26 12:02

こんばんは。



普通に・・・、
SELECT No, フラグ, MAX(金額)
FROM DB
WHERE フラグ = 1
GROUP BY No, フラグ
じゃ駄目なの?
    • good
    • 0
この回答へのお礼

解決いたしました。ご親切にどうもありがとうございます。

お礼日時:2010/08/26 12:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!