私は2つのテーブルを持っています。
メーカー
- idManufacturer
クーポン
idクーポン
idManufacturer
割引率
クーポンコード
開始範囲
終了範囲
そのメーカーで利用できるクーポンがある場合は、すべてのメーカーと「discountPercent」が最大のクーポンを取得する必要があります。各メーカーはクーポンを 1 つだけ持つ必要があります。
これは私が持っている SQL で、特定のシナリオ以外で機能します (以下を参照)。
DECLARE @maxdiscount TABLE
(
idmanufacturer INT
, discperc INT
)
INSERT INTO
@maxdiscount
SELECT
p.idmanufacturer
, max(discperc)
FROM
cp_manufacturers p
LEFT OUTER JOIN coupons c ON p.idmanufacturer = c.idmanufacturer
GROUP BY
p.idmanufacturer
SELECT
m.idmanufacturer
, m.discperc
, couponcode
FROM
@maxdiscount m
LEFT OUTER JOIN coupons c ON c.idmanufacturer = m.idmanufacturer AND c.discperc = m.discperc
問題は、割引率が同じメーカーのクーポンが 2 つある場合に、そのメーカーに対して 2 つのクーポンが返されることです。この場合、開始/終了範囲が大きいクーポンのみを取得したいと考えています。
私はこの部分で立ち往生しています。どんな助けもいただければ幸いです。
ありがとうございました。