こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

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

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

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

投稿日時 - 2010-05-24 19:01:40

QNo.5918894

すぐに回答ほしいです

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

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

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

投稿日時 - 2010-05-24 19:45:36

補足

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

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

投稿日時 - 2010-05-24 20:14:55

このQ&Aは役に立ちましたか?

21人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

今作っているSQLが分からないとHAVING句をどのように使用すればいいか分からないと思います。
元がテーブルなら
select *
from テーブル t
where not exists
( select 1 from テーブル t2
where t.品番 = t2.品番
and t.日付 < t2.日付 )
の要領で最新日付のものを取得出来ると思うのですが。
参考になりませんか?

投稿日時 - 2010-06-05 22:19:19

あなたにオススメの質問