You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从多张关联表提取最新记录并关联生成查询报表的实现方法

实现步骤说明

1. 筛选每个Cow ID对应的最新产犊日期

你可以用窗口函数ROW_NUMBER()实现,按CowID分组,Calving_Date倒序排序后取每组第一条即可,SQL示例如下:

WITH ranked_calving AS (
    SELECT
        ace.Calving_Date,
        ace.`Event Type`,
        ar.`Animal ID` AS `Cow ID`,
        -- 按牛只ID分组,产犊日期降序排序,最新的记录排序为1
        ROW_NUMBER() OVER (PARTITION BY ace.CowID ORDER BY ace.Calving_Date DESC) AS rn
    FROM Add_Cow_Event ace
    LEFT JOIN `Animal Register` ar ON ace.CowID  = ar.`Animal ID`  
    WHERE ace.`Event Type` = 'Calved'
)
SELECT `Cow ID`, Calving_Date AS `Last Calving_Date`
FROM ranked_calving
WHERE rn = 1;

如果你的数据库不支持CTE和窗口函数(比如MySQL 5.7及更早版本),可以用分组聚合搭配子查询实现:

SELECT
    ace.CowID AS `Cow ID`,
    MAX(ace.Calving_Date) AS `Last Calving_Date`
FROM Add_Cow_Event ace
LEFT JOIN `Animal Register` ar ON ace.CowID  = ar.`Animal ID`  
WHERE ace.`Event Type` = 'Calved'
GROUP BY ace.CowID
ORDER BY `Last Calving_Date` DESC;

如果需要删除同Cow ID的旧产犊记录,建议先备份全量数据,再基于上述查询结果筛选出需要保留的记录ID,删除其余同Cow ID的旧记录即可。

2. 后续生成完整报表的关联思路

基于上述拿到的每个牛只最新产犊记录,分别关联其余表获取要求的指标即可:

  • 关联PREGNANCY REGISTER表,按牛只分组取最大的检查日期得到Latest EC_Date
  • 关联Body Scoring Table表,按牛只分组取最新评分记录得到Latest BScore
  • 关联Feed Groups表取牛只当前最新分组得到Latest Group
  • 关联PRODUCTION TABLE表做行转列处理得到4个周度日期列,最后添加过滤条件至少1个周度列的Prod List不为空即可

注意事项

你原SQL中的表名、字段名包含空格,需要用对应数据库的转义符包裹(MySQL用反引号`,SQL Server用方括号[],PostgreSQL用双引号""),避免触发语法报错。

内容的提问来源于stack exchange,提问作者Gert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 01:42:02