dポイントプレゼントキャンペーン実施中!

SQL HAVING句?集約関数について

現在、SQLを書いているのですが、集約関数についてわからないことがあります。
下記のようなテーブルについて

  品番    SEC   SUB 倉庫コード 日付 金額
0102A255-****10000141220064201005015700
0102A255-****10000141220064200912267980
0102A255-****10000141220064200910019400

品番をひとつに絞り、かつ最新日付とその金額をもってくるためにはどうしたらいいでしょうか?
ようは一番上のレコードのみ抽出したいということです。
どなたかお願いします。

A 回答 (2件)

集約しないといけないのですか?


それとも、行の先頭だけ出せば良いのですか?
同じ品番の先頭行だけ出せば良いのなら
SELECT DISTINCT * FROM テーブル名 WHERE 品番 = '0102A255-****100001' ORDER BY 日付 asc;
とか・・・。

HAVING句は、GROUP BYで纏めた値とかの抽出に使います。
http://www.pursue.ne.jp/jouhousyo/SQLDoc/select1 …

この回答への補足

すみません。
詳しく書くとかえってわかりにくくなると思い、割愛させていたできました。

上記テーブルのデータはすでにいくつかのテーブルを結合し、必要最小限なデータまでGROUP BYで絞りこんだ状態です。
上記テーブル内にはひとつの品番しか書きませんでしたが、
本テーブルには同じように金額と日付以外が同じデータがいくつも存在します。
そのテーブルから品番はユニークなものしてなおかつ、日付がもっとも新しいデータだけを抽出したいのです。
この段階から方法があるかどうかわかりませんが、理想としては
HAVING句でその品番について日付 = 最新日付で返されるデータのみが欲しいということになります。
なにか方法はあるでしょうか?

補足日時:2010/05/24 20:14
    • good
    • 0

今作っているSQLが分からないとHAVING句をどのように使用すればいいか分からないと思います。


元がテーブルなら
select *
from テーブル t
where not exists
( select 1 from テーブル t2
where t.品番 = t2.品番
and t.日付 < t2.日付 )
の要領で最新日付のものを取得出来ると思うのですが。
参考になりませんか?
    • good
    • 0

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