首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在同一行中添加列字段值?

在同一行中添加列字段值?
EN

Stack Overflow用户
提问于 2018-11-16 21:36:38
回答 1查看 43关注 0票数 1

我在db2上使用SQL。

船运表:

代码语言:javascript
运行
复制
 +--------+------+
 | Weight | Cost |
 +--------+------+
 |      2 |    5 |
 |      5 |   10 | 
 |     10 |   15 | 
 |     30 |   45 |  
 |     50 |   80 |  
 +--------+------+

项目表:

代码语言:javascript
运行
复制
  +---------+--------+
  | Item ID | Weight |  
  +---------+--------+
  |       1 |     34 |  
  |       2 |      4 | 
  |       3 |      9 |    
  |       4 |      5 |  
  |       5 |     16 |    
  +---------+--------+

我想联系适当的运输成本与项目使用重量。因此,如果项目的重量与运输重量相关联,则等于该重量或下一个重量大于运输重量表中的重量。

我希望我的结果表在is之后,一切都是:

代码语言:javascript
运行
复制
+---------+-------------+-----------------+---------------+
| Item ID | Item Weight | Shipping Weight | Shipping Cost | 
+---------+-------------+-----------------+---------------+
|       1 |          34 |              50 |            80 |   
|       2 |           4 |               5 |            10 |  
|       3 |           9 |              10 |            15 |  
|       4 |           5 |               5 |            10 |  
|       5 |          16 |              30 |            45 | 
+---------+-------------+-----------------+---------------+

我想不出如何将运输重量与项目重量联系起来。一旦我这样做了,我就可以加入运费。

我尝试的是使用"WHERE >=船运权“,但这给了我所有的可能性,我只想要最好的,要么等于,要么下一个最大。我不擅长解释这一点,但我希望你能理解我的意思,看看我想要的结果表。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-16 21:39:09

那么,您可以使用关联子查询获取权重,然后使用join获取相关成本:

代码语言:javascript
运行
复制
select i.*, s.*
from (select i.*,
             (select min(s.weight)
              from shipping s
              where s.weight >= i.weight
             ) as shipping_weight
      from items i
     ) i join
     shipping s
     on i.shipping_weight = s.weight;

也许一个有趣的方法使用窗口函数:

代码语言:javascript
运行
复制
select i.*, s.*
from items i join
     (select s.*, lag(weight) over (order by weight) as prev_weight
      from shipping s
     ) s
     on i.weight <= s.weight and
        (i.weight > prev_weight or prev_weight is null)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53345750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档