• ベストアンサー

アクセスSQL

アクセス初心者です。 テーブルAに(売上日、商品A売上金額、商品B売上金額、支店)フィールドがあります。 売上日フィールドは重複あります。 次のクエリを定義するSQLはどのように記載すればいいでしょうか? 第一フィールド フィールド名:売上日リスト 内容:テーブルAの売上日を重複無しで全種類抜き出し日付順ソート。 第二フィールド フィールド名:商品Aラスト売上金額 内容:第一フィールドの売上日グループで、最後の商品A売上金額 第三フィールド フィールド名:商品Bラスト売上金額 内容:第一フィールドの売上日グループで、最後の商品B売上金額 以上よろしくお願い致します。

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

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

1、SELECT DISTINCT A.売上日 FROM A ORDER BY A.売上日; 2、SELECT LAST(A.商品A売上金額) FROM A WHERE A.売上日 = (SELECT MAX(A.売上日) FROM A); 3、SELECT LAST(A.商品B売上金額) FROM A WHERE A.売上日 = (SELECT MAX(A.売上日) FROM A); ちなみに、 SELECT FIRST(A.商品A売上金額) FROM A WHERE A.売上日 = (SELECT Max(A.売上日)FROM A); で最初! なお、2、3の回答として、 SELECT A.売上日, LAST(A.商品A売上金額) FROM A GROUP BY A.売上日; が所望なのかなとも考えられます。

hiroshi77777
質問者

お礼

参考になりました。ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

noname#22222
noname#22222
回答No.3

s_husky です。 No.2さんと同じような疑問ですが... なぜ、不確定な First、Last を求めるのかが今一つ理解できません。 データの登録・削除を繰り返せば、それらは変化すると思いますが...

すると、全ての回答が全文表示されます。
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

回答の前に、アップされたテーブルは問題ありですよ 商品や支店が増えた場合テーブルを改造しなければなりません テーブル改造はできるだけ避けるように設計するべきです [店別商品別売上](売上日、支店CD、商品CD、売上金額) のようなテーブルにするところでしょうね >ラスト売上金額 売上日の抽出条件欄に In (select max(売上日) from テーブルA) なおこのようなときにLastやFirstは使えません 詳しくは,下の参考URLを見てください First および Last 関数が期待どおりのレコードを返さない

参考URL:
http://support.microsoft.com/kb/208190/ja
hiroshi77777
質問者

お礼

参考になりました。ありがとうございました。

すると、全ての回答が全文表示されます。

専門家に質問してみよう