0

我有两个表@mtss 表:

@mtss
( [MM],[YYYY],[month_Start],[month_Finish],[ProjectID],[ProjectedBillable],[ProjectedPayable],[ActualBilled],[ActualPaid],[Total_To_Bill],[Total_To_Pay])

tbl_Snapshot ([MM],[YYYY],[month_Start],[month_Finish],[ProjectID],[ProjectedBillable],[ProjectedPayable],[ActualBilled],[ActualPaid],[Total_To_Bill],[Total_To_Pay]
)

我需要比较两个表并找到匹配项

如果 tbl_snapshot [MM] 和 [ProjectId] 匹配,则删除 tbl_snapshot 中的记录并从 @mtts 插入记录。

提前致谢。

4

2 回答 2

2

由于您使用的是 2008 年,因此您可以使用MERGE它作为单个逻辑操作执行:

;merge into tbl_Snapshot s
using @mtss m on s.MM = m.MM and s.ProjectId = m.ProjectId
when matched then update
set
    YYYY = m.YYYY,
    month_Start = m.month_Start
    /* Other columns as well, not going to type them all out */
;

这也很容易扩展到您可能必须处理的其他情况,如果数据仅存在于一个表中而不存在于另一个表中,则使用附加匹配子句。


当然,进一步考虑,在这种情况下,简单的UPDATE也可以。ADELETE后跟 an INSERT(其中删除和插入的行通过键相关)相当于 an UPDATE

于 2012-09-07T07:36:33.790 回答
0

像这样的东西:

DELETE tbl_snapshot 
FROM tbl_snapshot ss
INNER JOIN @mtss m ON m.MM = ss.MM AND m.ProjectId = ss.ProjectId

(我直接将代码写到这个编辑器,所以它可能有错误,但它应该让你知道如何继续)

于 2012-09-07T07:32:12.397 回答