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

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

  • 質問No.5918894
  • 閲覧数823
  • ありがとう数21
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 42% (85/200)

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

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

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

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

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

  • 回答No.1
  • ベストアンサー

ベストアンサー率 28% (595/2071)

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

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

お礼率 42% (85/200)

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

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

その他の回答 (全1件)

  • 回答No.2

ベストアンサー率 60% (431/717)

今作っているSQLが分からないとHAVING句をどのように使用すればいいか分からないと思います。
元がテーブルなら
select *
from テーブル t
where not exists
( select 1 from テーブル t2
where t.品番 = t2.品番
and t.日付 < t2.日付 )
の要領で最新日付のものを取得出来ると思うのですが。
参考になりませんか?
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ