2

次の状況で立ち往生しています。

私は2つのテーブルを持っていProductsますPostage:

Postageテーブル

+----------------------------------+
| Weight_GM  | Postal Charges ($)  |
+----------------------------------+
|   20       |  1                  |
|   40       |  1.5                |
|   50       |  1.7                |
+----------------------------------+

Productsテーブル

+-------------------------------+
| SKU   | Title     | Weight_GM |
+-------------------------------+
| ABC   | Shose     |   17      |
| JKL   | Camera    |   27      |
| XYZ   | IPad      |   48      |
+-------------------------------+

両方のテーブルで定義された にPostage基づいて、テーブルから適切な郵便料金を取る関係を作成したいと考えています。Weight

望ましい結果は次のようになります。

+---------------------------------------------------+
| SKU   | Title     | Weight_GM | Postal Charges    |
+---------------------------------------------------+
| ABC   | Shose     |   17      |   1               |
| JKL   | Camera    |   27      |   1.5             |
| XYZ   | IPad      |   48      |   1.7             |
+---------------------------------------------------+

注:私は多くの同様の質問をしてきましたが、私の問題に対する解決策はありませんでした.

前もって感謝します。

4

4 に答える 4

4

これはうまくいくはずです -- GROUP BY と MIN を使うだけです:

SELECT DISTINCT Pr.SKU, Pr.Title, Pr.Weight_GM, MIN(PO.Postal_Charges) as PO_Charges
FROM Products Pr
   JOIN Postage Po ON Pr.Weight_GM <= Po.Weight_GM
GROUP BY Pr.SKU, Pr.Title, Pr.Weight_GM

そしてフィドル

于 2013-01-30T16:56:50.530 に答える
1

これはそれを行う必要があります

;With WeightNumber AS
(
   SELECT Weight_GM, Postal_Charge, ROW_NUMBER() OVER (ORDER BY Weight_GM) AS Num 
   FROM Postage
)
WeightRange AS
(
   SELECT ISNULL(Prec.Weight_GM - 1, 0) AS START_WEIGHT, CurrentRow.Weight_GM AS END_WEIGHT, CurrentRow.Postal_Charge
   FROM WeightNumber CurrentRow
   LEFT JOIN WeightNumber Prec
      ON Prec.Num=CurrentRow.Num - 1
)
SELECT *
FROM Products p
JOIN WeightRange w 
   ON p.Weight_GM BETWEEN w.START_WEIGHT AND w.END_WEIGHT
于 2013-01-30T17:00:18.983 に答える
0

これは、次のコードで実行できます。内部結合は、キーWeight_GMを使用して2つのテーブルを結合します。

select a.SKU, b.Postal Charges from Products a 
inner join Postage b on a.Weight_GM = b.Weight_GM
于 2013-01-30T16:49:43.450 に答える
0

これを試して:

select SKU,Title,prds.Weight_GM b,pst.Weight_GM a,Postal_charges
from Postage pst ,Products prds 
where prds.Weight_GM < pst.Weight_GM
group by prds.Weight_GM; 

ここにデモがあります:デモリンク

于 2013-01-30T17:43:50.100 に答える