
あるテーブルに以下のカラムがあります。
店舗コード,売上日,金種コード,履歴番号,売上金額
プライマリキー(店舗コード~履歴番号)
このテーブルには、店舗、売上日、金種コードごとの売上金額が履歴で管理されています。
・データイメージ
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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLを教えてください
-
SQL server:SELECT文について
-
【マクロ】列を折りたたみ非表...
-
エクセルVBAで5行目からオート...
-
ACCESSのSQLで数値型に変換する...
-
Accessのクエリをクロス集計ウ...
-
jwwのクロスラインカーソルの角...
-
accessで指定期間の曜日カウン...
-
ACCESS クエリーから件数取得
-
Access2013 クエリ 他のテーブ...
-
SQLで違うテーブルの集計結果を...
-
関連がある複数のテキストファ...
-
Excel 2019 のピボットテーブル...
-
Accessで、複数のテーブルで随...
-
インデックスの削除と、インデ...
-
Accessのフォームについて
-
複数条件の抽出SQL文がわかりま...
-
access2000:フォームで入力し...
-
『iPod nano』英語→日本語に直...
-
SQLで使うクエリ文について質問...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLでグループ化した結果の件数...
-
フォームで検索 エラーの表示...
-
改行コードを削除して取得する...
-
MySQLで改行を含む文の登録のし...
-
項目名の制限について
-
ORA-01722: 数値が無効です
-
オラクルSQLの累計値取得方法に...
-
アクセスのクエリについて(前...
-
SQL文 グループ集計TOPに対する...
-
インサート文での条件の指定に...
-
Accessで期間指定の売上合計と...
-
SQL抽出方法:売上Tを集計した...
-
Accessで複数テーブルのJoin
-
SQL文のエラーについて
-
“SQL文を作るSQL”の書き方って...
-
UPDATE文を教えて頂けな...
-
【 困 】 ストアドプロシージャ
-
SQLの抽出方法について
-
列名無効について
-
Excel 2019 のピボットテーブル...
おすすめ情報