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

このような↓データからタイトルそれぞれの最新日のデータだけを抽出したいと思っています。
どのようなクエリを作るといいのでしょうか?(「最大」で設定すると、日付のパラメータを聞かれたり、(元の)「テーブルが見つかりません」というメッセージが出てうまくいきません)
因みにバージョンは2002です。どなたかご教授の程宜しくお願い致します。

タイトル 日付 価格
A 2010/2/1 3,000
A 2012/5/31 5,000
A 2014/9/30 7,000
B 2011/10/31 5,000
B 2015/12/20 8,000
C 2014/3/20 3,000
C 2016/12/20 7,000
D 2011/10/31 6,000
D 2015/12/20 12,000
E 2015/12/20 10,000
F 2010/7/31 5,000
F 2013/7/31 7,000
F 2016/5/31 12,000

A 回答 (2件)

もうご覧になっていないかもしれませんが。



1つのクエリで、ということなら

SELECT [テーブル1].*
FROM テーブル1
INNER JOIN
(
SELECT [テーブル1].[タイトル], Max([テーブル1].日付) AS 日付
FROM テーブル1
GROUP BY [テーブル1].[タイトル]
) AS tmp
ON ([テーブル1].日付 = tmp.日付) AND ([テーブル1].[タイトル] = tmp.[タイトル])
ORDER BY [テーブル1].[タイトル]

とか。

慣れないうちは、2段階のクエリで。

SELECT [テーブル1].[タイトル], Max([テーブル1].日付) AS 日付
FROM テーブル1
GROUP BY [テーブル1].[タイトル]

上記のクエリと、元のテーブルを内部結合したクエリを作成します。


なお、No.1 さんの回答の First は うまく行かないケースがあります。
確認は、1行目をカットし、新規のレコードに貼り付けてからクエリを開いてみてください。

詳しい説明はこちらで。
First および Last 関数の仕様
http://hatenachips.blog34.fc2.com/blog-entry-169 …
    • good
    • 0
この回答へのお礼

ご丁寧なご説明ありがとうございました。
大変助かりました。

お礼日時:2017/02/24 16:29

テーブル名をテーブル1とした時に、下記のsqlをQBEに貼り付けると下


記のデータが得られます。

sqlの内容。
SELECT テーブル1.タイトル, Max(テーブル1.日付) AS 日付の最大, Last(テーブル1.価格) AS 価格の最後
FROM テーブル1
GROUP BY テーブル1.タイトル;

得られるデータは、下記です。
タイトル 日付の最大 価格の最後
A 2014/09/30 \7,000
B 2015/12/20 \8,000
C 2016/12/20 \7,000
D 2015/12/20 \12,000
E 2015/12/20 \10,000
F 2016/05/31 \12,000

sqlはタイトルをグループ化して照準に並び替えをします。
日付を最大、価格を最後にします。やって見て下さい。
    • good
    • 0
この回答へのお礼

早速にご回答くださりありがとうございました。
参考になりました。

お礼日時:2017/02/24 16:30

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A