SQL Query添加时间戳

时间:2017-05-25 22:21:46

标签: sql sql-server

我的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 

1 个答案:

答案 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);