sql - 两个表基于条件的关系

标签 sql sql-server-2005 database-design

我陷入以下情况。

我有两个表ProductsPostage:

邮资

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

产品

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

我想创建一个关系,以便根据两个表中定义的 WeightPostage 表中收取适当的邮政费用。

期望的结果是这样的:

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

注意:我遇到过很多类似的问题,但没有解决我的问题。

提前致谢。

最佳答案

这应该可行——只需使用 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

还有Fiddle .

关于sql - 两个表基于条件的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14609166/

相关文章:

sql-server-2005 - Sqlcmd 输出文件中的尾随空格

sql-server - 来自 Powershell 的 Powershell DBCC CheckDB

database - 非识别关系中的强制性和非强制性

sql - 仅当列在时间戳中时如何才能找到 DAYS 的差异?

sql - 什么是 "Implicit Database Sequence"?

尝试运行简单脚本时 SQL 标识符无效

sql - SQL Server PK 最佳实践

database-design - 什么时候不应该使用代理主键?

mysql - 下线构建器应用程序的 SQL 和数据库设置

mysql - 将字符串拆分为行