我试过以下。它不会插入任何新行,尽管没有行也是重复的。为什么?我做错了什么?任何帮助的赞赏如何在SQL Server 2005中只插入非重复的行?
INSERT INTO TEMP_8
SELECT PASS_M, ENTRY_DT, EXIT_D, WORKED_HRS,
CONSECUTIVE_D = num -(SELECT max(num)
FROM TEMP_7 B
WHERE B.CONSEC <= A.CONSEC
AND B.GAP = 1
AND A.IC_N = B.IC_N) + 1
FROM TEMP_7 A
WHERE NOT EXISTS (SELECT *
FROM TEMP_8);
更新:
PASS_M ENTRY_DT, EXIT_DT, WORKED_HRS
peter 20/12/12 21/12/12 12
Tom 20/12/12 21/12/12 10
Tom 21/12/12 22/12/12 9
这些都不重复。重复的是当name
,entry_dt
和exit_dt
完全相同。
你如何定义一个重复的行? –
在not exists部分需要一个where子句,如果temp_8根本不包含任何记录,那么只会返回true。另外如果你想得到一个确切的答案,你需要更新问题以上述评论。 – PeterJ
谢谢,更新为建议 – 10e5x