这里相隔两个选项从约翰什么Woo建议。
使用左联接
INSERT INTO tbl_Snapshot
SELECT *
FROM @mtts mtts
LEFT JOIN tbl_Snapshot ss ON mtts.MM = ss.MM AND mtts.ProjectID = ss.ProjectID
WHERE ss.MM IS NULL AND ss.tbl_Snapshot IS NULL
使用MERGE语句(从SQL Server 2008中开始工作)
MERGE tbl_Snapshot AS ss
USING (SELECT * FROM @mtts) AS mtts
ON mtts.MM = ss.MM AND mtts.ProjectID = ss.ProjectID
WHEN NOT MATCHED THEN
INSERT([MM],[YYYY],[month_Start],[month_Finish],[ProjectID],[ProjectedBillable],[ProjectedPayable],
[ActualBilled],[ActualPaid],[Total_To_Bill],[Total_To_Pay])
VALUES(mm.[MM],mm.[YYYY],mm.[month_Start],mm.[month_Finish],mm.[ProjectID],mm.[ProjectedBillable],mm.[ProjectedPayable],
mm.[ActualBilled],mm.[ActualPaid],mm.[Total_To_Bill],mm.[Total_To_Pay]);
这是一个非常肮脏的方式(CAST为VARCHAR,然后MERGE,最后是COMPARE)
INSERT INTO tbl_Snapshot
SELECT *
FROM @mtts mtts
WHERE CAST(mtts.MM AS vARCHAR(10)) + CAST(mtts.ProjectID AS VARCHAR(10))
NOT IN (SELECT CAST(ss.MM AS vARCHAR(10)) + CAST(ss.ProjectID AS VARCHAR(10)) FROM tbl_Snapshot ss)
另一种选择是['MERGE'](http://msdn.microsoft.com/en-us/library/bb510625.aspx)语句。 – HABO