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

初めまして社内の登録データの抽出について困っております、ご助言をお願いいたします
環境:MSSQLServer2000

商品のマスターテーブルがありそこに登録されたカテゴリ別の最新型番を抽出する方法です

例)
Table1

code | cate | updtime

item1 | pc | 2009/10/13
item2 | pc | 2009/10/13
item3 | pc | 2009/10/15
itema | soft | 2009/10/10
itemb | soft | 2009/10/10
itemc | soft | 2009/10/10
itemA | supply | 2009/10/14
itemB | supply | 2009/10/15
itemC | supply | 2009/10/15

上記のようなデータの入った商品マスターテーブルから
下記のように各カテゴリで最も新しい登録商品をそれぞれ1件ずつ抽出したいのです

item3 | pc | 2009/10/15
itemc | soft | 2009/10/10
itemC | supply | 2009/10/15

updtimeで[order by]をかけてみると新しい物順に抽出できますが、カテゴリがばらばらになってしまいます。

何か良い方法がありませんでしょうか。

よろしくお願いいたします。

A 回答 (1件)

SQL Server 2000でこれを一発でやるのは結構厄介ですね。



しかも、示して頂いている例だけだと、このテーブルには主キーがないのかもしれないと思えます。
softのように同じupdtimeのものが3つある場合に、Itemcを選ぶ基準がわからなかったので、
とりあえずcodeの降順で一番大きいものにしておきました。
実態に合わせて調整してください。

SELECT
(SELECT TOP 1 code FROM table1
WHERE cate=t.cate and updtime=t.upddtime
ORDER BY code DESC),
t.cate,
t.updtime
FROM
(SELECT cate,max(updtime) updtime
FROM table1
GROUP BY cate) t
    • good
    • 0
この回答へのお礼

掲載していただいた内容で、希望したような動作ができました。
こう言う副問合せと言うんですかね
件数が結構あるのでwhere句を追加して2009年10月以降にしたらかなり早く動くようになりました。
非常に参考になりました。
ありがとうございました。

お礼日時:2009/10/16 15:06

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

関連するカテゴリからQ&Aを探す