
あるテーブルに以下のカラムがあります。
店舗コード,売上日,金種コード,履歴番号,売上金額
プライマリキー(店舗コード~履歴番号)
このテーブルには、店舗、売上日、金種コードごとの売上金額が履歴で管理されています。
・データイメージ
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で質問しましょう!
似たような質問が見つかりました
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- 金銭トラブル・債権回収 弁護士会照会で銀行の取引履歴を照会する事は出来るのでしょうか。 5 2023/02/13 15:53
- ネットスーパー 他人の閲覧履歴消せますか? 2 2022/09/19 04:26
- その他(Microsoft Office) エクセルで1行の長いデータを指定の桁数で分割する方法が知りたいです。 4 2022/05/20 21:55
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォームで検索 エラーの表示...
-
改行コードを削除して取得する...
-
項目名の制限について
-
SQLでグループ化した結果の件数...
-
“SQL文を作るSQL”の書き方って...
-
SQL文のエラーについて
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
Accessでテーブル名やクエリ名...
-
Oracle 2つのDate型の値の差を...
-
エクセルVBAで5行目からオート...
-
Accessのフィールド数が255しか...
-
ACCESSで400以上のフィールドが...
-
エクセルグラフの凡例スペース
-
作番ってどういう意味でしょうか?
-
セルの右クリックで出る項目を...
-
Accessのクエリでデータの入力...
-
ACCESSのクエリで集計で、先頭...
-
FROM の中で CASE を使えるでし...
-
importについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQLで改行を含む文の登録のし...
-
項目名の制限について
-
フォームで検索 エラーの表示...
-
ORA-01722: 数値が無効です
-
SQLでグループ化した結果の件数...
-
改行コードを削除して取得する...
-
アクセスのクエリについて(前...
-
【 困 】 ストアドプロシージャ
-
オラクルSQLの累計値取得方法に...
-
列名無効について
-
Accessで期間指定の売上合計と...
-
Oracleでテーブルの結合について
-
SQL抽出方法:売上Tを集計した...
-
SQLの抽出方法について
-
SQLでNOT INと!=ALLの違い
-
SQL文のエラーについて
-
Oracle delete文について
-
♪Oracle SQL 処理が成功した時...
-
SQL文 2つのテーブルから、グ...
-
DATA 集計
おすすめ情報