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

教えてください。
商品テーブルに以下のフィールドがあるとします。
商品コード、補助コード、入力日、原価
0010,001,20050901,1000
0010,005,20050902,1010
0010,008,20050907,0958
0020,100,20050901,0500
0020,010,20010905,0550
0100,100,20040501,1200
このテーブルから、商品コードごとに1件のレコード(例えば補助コードが最大のものとか入力日が最大のもの)を取得するクエリーはどのように作成すればよいでしょうか?

A 回答 (9件)

クエリにて


新しいフィールド aa:[補助コード] & [入力日] & [原価]を作成して、
商品コードでグループ化
aaの最大値を取って
補助コードの値として 補助CD:left([aa],3)
入力日の値として  入力日A:mid([aa],4,8)
原価の値として    原価A:right([aa],4)
といったようにしてはいかがでしょう
 
    • good
    • 0

選択クエリを作りそのクエリを集計クエリにし商品コードをグループ化・補助コードを最大・入力日を最大・単価を最小とすれば


0010,001,20050901,1000
0010,005,20050902,1010
0010,008,20050907,0958
0020,100,20050901,0500
0020,010,20050905,0550
0100,100,20040501,1200

0010,008,20050907,0958
0020,100,20050905,0500
0100,100,20040501,1200
と表示できますよ。
SQLなら
SELECT 商品テーブル.商品コード, Max(商品テーブル.補助コード) AS 補助コードの最大, Max(商品テーブル.入力日) AS 入力日の最大, Min(商品テーブル.単価) AS 単価の最小
FROM 商品テーブル
GROUP BY 商品テーブル.商品コード;
で出来ます。
    • good
    • 0

No5sanbitです。


ご質問の趣旨に合っていますか?
この方法だと項目ごとに2個のクエリが必要ですね。
いい方法が思いつきません。
他にいい回答があればいいですね。
    • good
    • 0

回答ではありませんが気がついたことがあるので少し書きます。

勘違いがあったらご指摘ください。

どうも話が噛み合わないと思っていたのですが(おそらく質問者様のほうもそうでしょうが)、原因がわかりました。質問文のサンプルですが「0020,010,20010905,0550」になってますね。日付が2001年になってます。一方、質問者様の補足を見る限り、2001年の日付はありません。ということは、サンプルの方は2005年が正解ですか?

少し混乱してきたので、元のデータと結果のサンプルを再度補足していただけますか。それを見て、もう一度考えます。サンプルはもう少し長めでお願いします(同じ商品コードで3レコードくらい)。

この回答への補足

そうですね、テーブルのサンプルがあまりよくなく、補足#4はまちがってますね。
サンプルテーブルの5行目が
0020,010,20050905,0550
であった場合、
補足#4のようになりほしい結果ではないということです。

補足日時:2005/09/15 18:36
    • good
    • 0

クエリを集計でグループ化し


商品コード:グループ
補助コード:最大とします。
次にこのクエリと商品テーブルで商品コードと補助コードゲでリンクしたクエリを作成します。
自信有りませんが間違ってましたらご容赦ください。

この回答への補足

なるべくひとつのクエリで実現したいと思うのですが、無理でしょうか?

補足日時:2005/09/15 11:48
    • good
    • 0

#2の回答は、#1の補足の表が「補助コード=最大、入力日=最大、原価=最小」となっていたのでそのまま作ったんですが...。

違います?

> 入力日および原価は、最大、最小の指定をするのではなく表示させたいのですが可能ですか?

ちょっと意味がわかりかねるんですが、何を表示させればいいんでしょうか。結果に出すのは、商品コード1種類につき1レコードでいいんですよね? でも、元のレコードは複数あるわけで、そのうちのどれを取ればいいんでしょう? 補足お願いします。

言葉で説明しづらかったら、もう少し長めのサンプルを書いてもらったほうがいいかもしれないです。元の表が結果こうなるみたいな感じで。

この回答への補足

補助コードが最大だからといって、入力日が最大とは限らず、原価が最小とは限らないということです。

#1の補足に書いたほしい結果は以下のとおりですが、
商品コード、補助コード、入力日、原価
0010,008,20050907,0958
0020,100,20050901,0500
0100,100,20040501,1200

入力日=最大、原価=最小の指定をすると、以下のようになりませんか?
商品コード、補助コード、入力日、原価
0010,008,20050907,0958
0020,100,20050905,0500
0100,100,20040501,1200

補足日時:2005/09/15 11:43
    • good
    • 0

補助コードフィールドの抽出条件欄に以下の構文を入力



(select max ( [補助コード] ) from [商品])

この回答への補足

この方法では最大の補助コード(例のテーブルだと100)を持ったレコードしか表示されないです。

補足日時:2005/09/15 07:50
    • good
    • 0

1. 商品テーブルを元に選択クエリを作る


2. クエリをデザインビューで開く
3. メニューの「表示」-「集計」を選ぶ
  (ここで集計行が現れて、全部「グループ化」となっているはず)
4. 補助コードの集計行をクリック
5. コンボボックスから「最大」を選ぶ
6. 同じように、入力日を「最大」、原価を「最小」にする

以上で#1の補足の表はできるはずです。
(こういう意味とは違うかな...)

この回答への補足

入力日および原価は、最大、最小の指定をするのではなく表示させたいのですが可能ですか?

補足日時:2005/09/15 07:45
    • good
    • 0

選択クエリの作成ですね。


補助コード選択クエリの場合で説明します。

1.”ウィザードを使用してクエリを作成する。”でテーブルのすべての要素を選択してクエリを作成します。
作成したクエリを、デザインモードで開いて、補助コードフィールドの抽出条件欄に [補助コードを入力] と入力します。([ ]も入力です)
これで、クエリを開くと、”補助コードを入力”とのダイアログが出ますので、そこに補助コードを入力すれば、該当するレコードが表示されます。

2.入力日クエリも、1.で作成したクエリをコピーして、([補助コードを入力]は削除します)入力日テーブルに、同様の作業を行えば作成できます。

この回答への補足

補助コードをパラメータ入力するのではなく、最大のものを自動判定でセレクトしたいのです。
(各商品コードごとに補助コードの最大値がわからないのでパラメータ入力もできないのです。)
作成したクエリを実行すると以下の結果が得られるようにしたいのです。

商品コード、補助コード、入力日、原価
0010,008,20050907,0958
0020,100,20050901,0500
0100,100,20040501,1200

補足日時:2005/09/15 01:10
    • good
    • 0

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

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