
あるテーブルに以下のカラムがあります。
店舗コード,売上日,金種コード,履歴番号,売上金額
プライマリキー(店舗コード~履歴番号)
このテーブルには、店舗、売上日、金種コードごとの売上金額が履歴で管理されています。
・データイメージ
0001,2004/04/01,01,0,1000 ・・・1行目
0001,2004/04/01,01,1,1100 ・・・2行目
0002,2004/04/01,02,0,500 ・・・3行目
0003,2004/04/01,03,0,2000 ・・・4行目
0003,2004/04/01,03,1,2010 ・・・5行目
0003,2004/04/01,03,2,1500 ・・・6行目
0001,2004/04/02,01,0,800 ・・・7行目
・
・
このデータから、売上日を指定して、
全店舗の金種ごとの履歴番号が最大のレコード(2,3,6行)
を取得したいのですが、いいSQLが思いつかないので、ご存知の方教えてください。
No.2ベストアンサー
- 回答日時:
わかりやすさを第一にすると、ビューを作るのが一番わかりやすいですね。
CREATE VIEW TABLE_MAX_RIREKI(店舗コード, 売上日, 金種コード, 最大履歴) AS
SELECT 店舗コード, 売上日, 金種コード, MAX(履歴番号)
FROM TABLE
GROUP BY 店舗コード, 売上日, 金種コード
こう定義しておくと、抽出クエリーは、次の通り。
SELECT A.店舗コード , A.売上日 , A.金種コード , A.履歴番号 , 売上金額
FROM TABLE A, TABLE_MAX_RIREKI B
WHERE A.店舗コード = B.店舗コード AND A.売上日 = B.売上日 AND A.金種コード = B.金種コード AND A.履歴番号 = B.最大履歴
くらいの感じでしょうか。
ここからは、データベースの指定がないので、機種固有になります。
一つのクエリーの形でどうしても作りたいなら、ということで、考え方だけ。
もし、FROM句にSELECT文が書くことが許されてましたら、FROM TABLE A, TABLE_MAX_RIREKI B のTABLE_MAX_RIREKIの所に、ビューの定義のセレクト文を書けばいけるでしょう。
WHERE句のサブクエリーで、リスト形式の比較(複数フィールドの比較)が許されているなら、ビューの定義をサブクエリーの形に取り込んで、WHERE句で、(店舗コード , 売上日 , 金種コード , 履歴番号) と比較してください。
これもダメなら、WHERE句で、 店舗コード||売上日||金種コード||履歴コード と、ビューの定義のフィールドを同じ形に置き換えたものを返すサブクエリーとの比較でいけると思います。(要するに、文字列の形で連結して一つのフィールドとみなしているだけですね。)
No.1
- 回答日時:
売上日,店舗コード,金種コード,履歴番号でレコードを特定できるなら、
select T.* from T,(select 売上日,店舗コード,金種コード,max(履歴番号) 履歴番号 from T where 売上日=? group by 売上日,店舗コード,金種コード) TMAX
where T.売上日=TMAX.売上日 and T.店舗コード=TMAX.店舗コード and T.金種コード=TMAX.金種コード and T.履歴番号=TMAX.履歴番号;
――でどうでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GROUP BYの記述方法について
-
列名無効について
-
オラクルSQLの累計値取得方法に...
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
ACCESS検索★ある文字を複数のフ...
-
Accessで、固定アルファベット+...
-
Oracle 2つのDate型の値の差を...
-
INSERT INTO ステートメントに...
-
Accessでテーブル名やクエリ名...
-
Accessのフィールド数が255しか...
-
Countと受付状態の表示に...
-
エクセルVBAで5行目からオート...
-
accsessで顧客コードで氏名を呼...
-
【Access】フォームで自動計算...
-
カウントが出来ません
-
ACCESSで400以上のフィールドが...
-
再計算って出来ますか?
-
Accessのクエリでデータの入力...
-
Access2000 更新のタイミング?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLでグループ化した結果の件数...
-
MySQLで改行を含む文の登録のし...
-
項目名の制限について
-
フォームで検索 エラーの表示...
-
列名無効について
-
Accessで期間指定の売上合計と...
-
ORA-01722: 数値が無効です
-
改行コードを削除して取得する...
-
縦表示データを列として取得す...
-
DATA 集計
-
SQL抽出方法:売上Tを集計した...
-
SQLServerにおける累積、累計取...
-
オラクルSQLの累計値取得方法に...
-
DB設計
-
SQL抽出方法に悩んでいます④
-
以下のようなSQLについて教えて...
-
SQL抽出方法に悩んでいます。 S...
-
インサート文での条件の指定に...
-
ORACLEのUPDATEについて...
-
SQLでNOT INと!=ALLの違い
おすすめ情報