我的ERP系统中有一个跟踪车间订单状态的表。它具有开放日期(列名ORGDUE_10)和状态列(STATUS_10),其代码为1-6,状态3是未结订单,状态4关闭(其余代码对此应用程序无关紧要)。不幸的是,这个表没有时间戳列,我可以在订单关闭时获取日期。我需要确定是否按时关闭了多个商店订单(STATUS_10从3更改为4),或者是否超过截止日期(ORGDUE_10)。
我有什么想法可以做一个能够完成此任务的查询?我假设我需要另一个表 - 将数据写入它然后是某种触发器?
我正在使用VS2015。我无法编辑的表名是Order_Master
STATUS_10 ORDNUM_10 PRTNUM_10 CURDUE_10
4 | 50015246 |ASY5670 | 9/4/2017
3 | 50016983 |ASY5699 | 5/15/2017
答案 0 :(得分:0)
我想通了(我想)。这是我用过的代码,似乎可以解决这个问题。此代码将在两个不同的服务器上更新,插入和有条件地时间戳(datestamp)两个不同的表。我希望这是有道理的,并帮助别人。我很感谢@Jonathan Leffler给予的帮助,对不起,我没有让你轻松。
MERGE server2.dbo.table2 AS target /* the added server.dbo is in the event the two tables are
on different sql servers*/
USING server1.dbo.table1 AS source ON (target.column-t = source.column-s) /*
column-t is the target column and column-s is the matching source column */
WHEN MATCHED AND (conditional column) AND (antoher conditional column) THEN
UPDATE SET
column-t = source.column-s, column-t (for datestamp) = (GETDATE())
WHEN NOT MATCHED AND (conditional column) AND (antoher conditional
column)THEN /* you cannot use a WHERE clause in a MERGE but you can set
up similar conditions in the WHEN statements */
INSERT (target columns)
VALUES (source columns in same order as target columns);