首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回包含连接数据的最大选择记录

返回包含连接数据的最大选择记录
EN

Stack Overflow用户
提问于 2019-01-09 00:59:07
回答 1查看 21关注 0票数 0

我有以下表格,我正在尝试选择生产的最新时期的小麦数量。我需要返回金额和Period_ID的名称。

我有一个查找表,可以很容易地将Period_ID与正确的时间顺序相关联。(表句点)

代码语言:javascript
复制
Table: Periods
Period_ID   |   Period_Order
-----------------------------
18JANP      |   51
18FEBP      |   52     
18MARP      |   53
18APRP      |   54
18MAYP      |   55


Table: Production
Farm_ID     |    Amount      |    Period_ID
--------------------------------------------
11-230      |    1500        |    18JANP
11-230      |    0           |    18FEBP
11-230      |    300         |    18MARP
11-230      |    600         |    18APRP
11-232      |    400         |    18JANP
11-232      |    900         |    18FEBP
11-232      |    300         |    18MARP
11-232      |    0           |    18APRP
11-232      |    100         |    18MAYP

这是我目前正在尝试的查询:

代码语言:javascript
复制
SELECT Farm_ID, 
       MAX(Periods.Period_Order),
       Amount
FROM Production
INNER JOIN Periods ON Production.Period_ID = Periods.Period_ID
WHERE Amount > 0
GROUP BY Farm_ID

我知道在上面的例子中,数量>0确实是不必要的,但是可能会有最后一段时间没有返回数量的情况,所以我必须能够再往后看。

我希望它能返回:

代码语言:javascript
复制
Farm_ID: 11-230
Amount: 600
Period_ID: 18APRP
Period_Order: 54

代码语言:javascript
复制
Farm_ID: 11-232
Amount:100
Period_ID:18MAYP
Period_Order: 55

但是我得到的是正确的数量和Period_Order,但是错误的Period_ID:它看起来像这样(为了简洁,只有一条记录):

代码语言:javascript
复制
 Farm_ID: 11-230
 Amount: 600
 Period_ID: 18JANP
 Period_Order: 54

这就像连接部分地工作了,但是我不明白为什么我没有从连接的表中获得正确的关系数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-09 01:11:02

您可以使用子查询来获取最大周期

(没有farm_id的原始问题)

代码语言:javascript
复制
  select a.Period_ID, a.amount, b.Period_Order 
  from Periods a 
  inner join Production b on a.Period_ID = b.Period_ID
  inner join  (
    select  MAX(Periods.Period_Order) max_per
    FROM Periods a 
    INNER JOIN Production b on a.Period_ID = b.Period_ID
    WHERE b.Amount > 0
  ) t on t.max_per = a.order

已使用场_id修改问题

代码语言:javascript
复制
  select a.Period_ID, a.amount, b.Period_Order , b.farm_id
  from Periods a 
  inner join Production b on a.Period_ID = b.Period_ID
  inner join  (
    select  MAX(Periods.Period_Order) max_per,  b.farm_id 
    FROM Periods a 
    INNER JOIN Production b on a.Period_ID = b.Period_ID
    WHERE b.Amount > 0
    group by farm_id 
  ) t on t.max_per = a.order and t.farm_id = b.farm_id
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54096423

复制
相关文章

相似问题

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