人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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です。

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


●質問者: ruijio
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:50円 access CD SQL コード
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● degucho
●20ポイント

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

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

店舗:集計 グループ化

発注日:集計 最大

)

のクエリを作成して

もとのテーブルと

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

◎質問者からの返答

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


2 ● kopj
●20ポイント

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.発注日

◎質問者からの返答

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


3 ● Mr_T_0023
●20ポイント

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

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

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

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

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

◎質問者からの返答

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


4 ● myrmecoleon
●20ポイント

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

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で検証までしてもったいなかったので。役に立たなきゃポイント不要。

◎質問者からの返答

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


5 ● K_SUKE
●20ポイント

select *

from 発注テーブル

where 連番 in (

select max(連番)

where 発注テーブル

group by 店舗)


これでどうでしょう。

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ