ACCESS(SQL)に関して教えて下さい。


発注テーブル

フィールド
「no」・・・自動連番
「店舗cd」・・・店舗のコード
「発注日」・・・「yyyymmdd」形式の日付
「発注金額」・・・金額

「no」が主キーです。

サンプルテーブル
----------------------------------------
連番---- 店舗---- 発注日---- 金額
1--- 692--- 20070401--- 5250円
2--- 692--- 20070403--- 10500円
3--- 510--- 20070406--- 7750円
4--- 510--- 20070401--- 1050円
5--- 692--- 20070404--- 2100円
----------------------------------------

このようなテーブルから

3--- 510--- 20070406--- 7750円
5--- 692--- 20070404--- 2100円

のように「店舗毎で最新の一件のリスト」を抽出するにはどのようなSQL文書けばよろしいでしょうか?
または、ACCESSのデザインヴューでもOKです。

ご指導よろしくおねがいいたします。

回答の条件
  • 1人1回まで
  • 登録:2007/04/26 11:52:02
  • 終了:2007/05/01 08:10:59

回答(5件)

id:degucho No.1

degucho回答回数250ベストアンサー獲得回数652007/04/26 12:23:07

ポイント20pt

クエリで、店舗ごとの最大発注日(Max関数)

(デザインヴューでいうと、

店舗:集計 グループ化

発注日:集計 最大

のクエリを作成して

もとのテーブルと

店舗、発注日で結合するのが簡単だと思います

id:ruijio

ありがとうございます。こちらの方法で何とかできました。

2007/05/01 08:10:43
id:kopj No.2

kopj回答回数123ベストアンサー獲得回数62007/04/26 12:24:03

ポイント20pt

select ta2.* from (select 店舗cd , max (発注日) as ht from 発注テーブル group by 店舗cd) as ta1, 発注テーブル as ta2

where ta1.店舗cd = ta2.店舗cd and ta1.ht = ta2.発注日

id:ruijio

ありがとうございます。From文にサブクエリーを入れることができるんですね。勉強させていただきます。

2007/05/01 08:10:42
id:Mr_T_0023 No.3

Mr_T_0023回答回数20ベストアンサー獲得回数02007/04/26 12:24:49

ポイント20pt

Mr.Tです、こんにちは。

Accessのバージョンは?と聞きたいところですが、

とりあえずAccess2003でやってみた。

SELECT First(サンプルテーブル.[no]),
 サンプルテーブル.店舗コード, Max(サンプルテーブル.発注日)
 First(サンプルテーブル.金額)
 FROM サンプルテーブル
 GROUP BY サンプルテーブル.店舗コード
 ORDER BY Max(サンプルテーブル.発注日) DESC

AccessなのでFirst()が使えると思ふ。

id:ruijio

Firstというのは初めて聞きました。勉強させていただきます。ありがとうございます。

2007/05/01 08:10:40
id:myrmecoleon No.4

myrmecoleon回答回数45ベストアンサー獲得回数72007/04/26 12:28:37

ポイント20pt

テーブル名「発注テーブル」,フィールドがそれぞれ連番,店舗,発注日,金額 のかたちのテーブルで,

SELECT [連番],a.[店舗],a.[発注日],a.[金額] FROM [発注テーブル] as a inner join (SELECT [店舗],MAX([発注日]) as c FROM [発注テーブル] GROUP BY [店舗]) as b ON (a.[店舗] = b.[店舗] and a.[発注日] = b.c);

ほかに回答者がいるのでいらんかと思ったけれど,ACCESSで検証までしてもったいなかったので。役に立たなきゃポイント不要。

id:ruijio

ありがとうございます。複雑なんですね。SQLは奥が深いですね。

2007/05/01 08:10:37
id:K_SUKE No.5

K_SUKE回答回数73ベストアンサー獲得回数52007/04/26 12:36:33

ポイント20pt

select *

from 発注テーブル

where 連番 in (

select max(連番)

where 発注テーブル

group by 店舗)


これでどうでしょう。

id:ruijio

1番の方の回答でなんとかできました。ありがとうございました。

2007/05/01 08:10:34

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません