
添付画像のようなテーブルがあります。
製品IDと販売店でユニークです。
製品毎に、最安の価格で売っている店を一覧として
出したいのですが、うまくいかず困っています。
表示としては
TEST1 100 A店
TEST2 300 C店
というようにしたいのです。
また、もし最安の店舗が複数あれば、登録日が一番新しい店を
最安店舗としたいです。
製品IDでGroupByをして、価格のminで、製品毎の最安はとれるんですが、
最安の店舗が複数ある場合に困っています。
サブクエリで登録日でソートしてTOP1とかになるのでしょうか。
冗長で重いクエリになってしまい、実用に耐えず、困っています。
うまい取り方があったらご教授いただけないでしょうか。
よろしくお願いします。

A 回答 (3件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
select abc.* from abc join ( select 製品id, 販売店
from ( select 製品id, 販売店,
ROW_NUMBER() OVER( PARTITION BY 製品id ORDER BY 価格 ,登録日 DESC ) AS RN
from abc ) as t where rn = 1 ) as t
on abc.製品id=t.製品id and abc.販売店=t.販売店
No.1
- 回答日時:
SELECT *
FROM テーブル a
WHERE
価格 = (SELECT MIN(価格) FROM テーブル WHERE 製品ID = a.製品ID)
AND
登録日 = (SELECT MAX(登録日) FROM テーブル WHERE 製品ID = a.製品ID AND 価格 = a.価格)
ORDER BY 製品ID
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
VIEWの元のテーブルのindexって...
-
SQLサーバから、項目の属性(型...
-
小人の読み方は?
-
MYSQLでSQLSERVERのリンクサー...
-
マイクラPC版のコマンドで効率...
-
ある時間以内の利用者の抽出に...
-
エラー 1068 (42000): 複数の主...
-
URL と行番号の指定
-
キー毎の、ある列のmaxのレコー...
-
#1136 - Column count doesn't ...
-
select文のwhere句に配列を入れ...
-
selectした大量データをinsert...
-
DataTableで重複行を削除したい
-
Unionした最後にGROUP BYを追加...
-
インスタの名前でかっこいいと...
-
SQLにて特定の文字を除いた検索...
-
LAST_INSERT_IDで同時にアクセ...
-
VBA リボンのCheckBox2個をOpt...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
VIEWの元のテーブルのindexって...
-
エラー 1068 (42000): 複数の主...
-
SQLサーバから、項目の属性(型...
-
select文のwhere句に配列を入れ...
-
SQL Left Join で重複を排除す...
-
Access パラメータクエリをcsv...
-
マイクラPC版のコマンドで効率...
-
【Transact-sql】 execの結果を...
-
sqlで、600行あるテーブルを100...
-
SQLにて特定の文字を除いた検索...
-
1テーブル&複数レコードの更新...
-
PL/SQLの変数について
-
WordpressのContact form 7でzi...
-
複数テーブルのGROUP BY の使い...
-
バインド変数について
-
inner joinをすると数がおかし...
-
MySQLのint型で001と表示する方...
-
updateを1行ずつ実行したい。
おすすめ情報