我有一个“主”表,我正在尝试应用更改表。 “大师”是一张表,是从过去的一个时间点开始的。自那时起对“主人”所做的更改列在“更改”中,并且我获得了记录编号,需要更新的字段的名称,字段的新值以及日期/时间改变了。如果我不能采取最新的更改,那不是问题,因为我可以更改表,以便它只有最新的更新。我的问题是获取一个查询来更新记录中的字段,我从另一个表中获取字段名称。
有什么想法吗?我从硬编码方程开始我的代码,但想知道是否有动态的方法来做到这一点。
UPDATE MASTER
INNER JOIN MASTER b
ON a.Id = b.Id
SET b.description = a.New_Value
WHERE a.change_field = "Description"
......(then I need it to do the same for any instance of one of the other 3 fields)
;
表“MASTER”:
Id | Description | Brand | Cost | Mapping
--------------------------------------------------
123 | A Desc | Any | 0.01 | Candy
456 | B Desc | Old | 0.02 | Baking
789 | C Desc | Brand | 0.03 | Season
表“更改”:
Id | Change Field | New Value | Change Time
-----------------------------------------------------------
123 | Description | AA Desc | 01:15:00
123 | Description | AAA Desc | 12:15:00
456 | Brand | Good | 01:15:00
456 | Brand | Best | 12:15:00
789 | Cost | 0.44 | 01:15:00
789 | Mapping | Salt | 01:15:00
789 | Mapping | Sugar | 12:15:00
表“MASTER”,更新为“CHANGES”:
Item Code | Description | Brand | Cost | Mapping
--------------------------------------------------
123 | AAA Desc | Any | 0.01 | Candy
456 | B Desc | Best | 0.02 | Baking
789 | C Desc | Brand | 0.44 | Sugar
非常感谢!
答案 0 :(得分:0)
如果没有足够的时间我会怎么做
将所有行从CHANGES
表复制/导出到Excel工作表。
然后使用CONCATENATE
公式在Excel上构建查询,点击下面的快照。
一旦您的公式完美,只需将其向上拖动到下面的所有行。
然后只需将整个批量从Excel列复制粘贴到查询浏览器并执行它。
还有一件事:如果您想要按时间更新最新值(在您的情况下,description
,branch
和mapping
字段有两行{{1}然后你需要只复制那些需要处理的记录。例如从Change Time
表中选择记录时,您需要使用Changes
和group by Change Time
当你生成公式时,你还需要处理其他数据类型然后字符串略有变化 - 我在快照中提到。
如果它没有帮助或者您需要更多帮助,请告诉我。
如果有帮助,请将其标记为答案。