3つのテーブルを結合し、結果を取得しようとしておりますが、
該当結果が複数あった場合にIDが大きいものを
一件だけ抽出する処理の書き方がわからず困っております。
上記3つのテーブルを結合し、店コードと日付で検索を行い結果を取得したいです。
街テーブルからは緯度経度をもとに計算を行い結果をもとに結合を行っておりますが
緯度経度の性質上、隣り合った市区町村で緯度経度が被ってしまうことがあり、
もし緯度経度で複数の市区町村が抽出された場合は街コードが大きいものを取得したいと考えております。
試したこと
以下のsqlで店コードが指定のものかつ日付が指定の範囲でいちばん大きい結果を取得
することができましたが、meshcodeが複数該当してしまった場合に街コードが大きいものを一件
取り出す抽出方法がわかりませんでした。。。
SELECT stores.*,categories.category,cities.cityname FROM(SELECT storecode,buildcode,lat.lng,date,rank() OVER (PARTITION BY storecode ORDER BY date DESC) AS rank FROM stores WHERE (storecode = 'A01' AND date <= '2021-04-19') OR (storecode = 'B02' AND date <= '2021-04-20') AS storetable LEFT OUTER JOIN categories ON stores.buildcode = categories.buildcode LEFT OUTER JOIN meshcode ON (latとlngを元に計算する式の為省略) = cities.meshcode WHERE rank = 1
複数のテーブルを結合しつつ同時に複数条件で検索を行う際に
それぞれの該当結果が複数ある場合での結果をそれぞれ一件に絞り込む方法について
ご存知でしたらお伺いしたいです。
質問が長く見づらくなってしまい大変お手数をおかけしますが、どうぞよろしくお願い致します。
また、わかりにくい点や説明不足/不明点等ございましたらご指摘をお願い致します。
回答2件
あなたの回答
tips
プレビュー