我想创建一个触发器,如果满足条件,则将新记录更新到第二个表
TableA
#ID,animalid,calvdate,lactation
1,animal1, 2016-03-15,1
2,animal1, 2017-06-09,2
TableB
#animalid, calvdate, milkmorning, milkevening
animal1,2017-07-09,2,2
animal1,2018-08-27,3,3
我想将新的正确日期更新为表格。以下是我的查询
SELECT animalid,calvdate,lactation FROM tableB
inner join tableA on tableB.animalid = tableA.animalid
where TO_DAYS(tableA.calvdate) -TO_DAYS(tableB.calvdate) > 400
group by animalid and calvdate
Expected Output
#ID,animalid,calvdate,lactation
1,animal1, 2016-03-15,1
2,animal1, 2017-06-09,2
3,animal1, 2018-08-27,3
注意:必须自动生成哺乳期
预期输出有3条记录,因为与新的日期相比,新的日期更符合条件且超过400天
答案 0 :(得分:0)
我在这里承担了几件事。
1。每个动物ID的泌乳量将分别增加。 2.如果差异大于400天,则只需与每个动物ID中的最新cal齿动物进行比较,并从B中插入记录。
<insert into A>
SELECT B.animalid,B.calvdate,init.lactation
FROM
(SELECT MAX(calvdate) as calvdate, animalid FROM tableB GROUP BY animalid) B
left join
(SELECT MAX(calvdate) as calvdate, MAX(lactation) + 1 as lactation, animalid FROM tableA GROUP BY animalid) init
on
B.animalid = init.animalid
AND DATEDIFF(B.calvdate,init.calvdate) > 400
WHERE init.animalid IS NOT NULL
您可以在此处查看此内容的SQL Server模拟:https://rextester.com/BLT38001