我有下面的脚本可行但是我需要一些帮助来修改它。
我现在需要做的是以下内容 1.如果当天已存在,我需要删除当天的所有数据并插入当天的新数据。 2.如果当天不存在,我需要插入当天的数据。
我的日期格式写为yyyy-mm-dd hh:mm:ss 在当前形式中,只有当前日期大于前一天才会插入数据。
Declare @Date As Date
SET @Date = (SELECT Max(CONVERT(char(10),[Date],102)) FROM [dbo].[ESOEmail_Monthly$])
INSERT INTO [dbo].[ESOEmail_Monthly$]
SELECT [EMP_ID]
,[NAME]
,[DEPT]
,[DATE]
,[End Time]
,[LOGOUT]
,[ESO]
,[Team Manager]
,[Senior Manager]
,[SITE]
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=\\VF_RSOSDCNASUDA\fidopost\National_Command\National Command Centre\SQL\ESO\ESO.xlsm;HDR=YES',
'SELECT * FROM [ESOEmail$]')
WHERE (CONVERT(char(10),[Date],102) > CONVERT(DATETIME, @Date, 102))
答案 0 :(得分:0)
在挖掘并找到一些帮助后,我找到了一个对我有用的解决方案。我发布了解决方案。
Declare @Date As DATE
IF OBJECT_ID('Tempdb..#1','U') IS NOT NULL
DROP TABLE #1
SELECT [EMP_ID]
,[NAME]
,[DEPT]
,[DATE]
,[End Time]
,[LOGOUT]
,[ESO]
,[Team Manager]
,[Senior Manager]
,[SITE]
INTO #1
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=\\VF_RSOSDCNASUDA\fidopost\National_Command\National Command Centre\SQL\ESO\ESO.xlsm;HDR=YES',
'SELECT * FROM [ESOEmail$]');
SELECT TOP 1 @Date=[DATE] FROM #1
--DELETE
DELETE [dbo].[ESOEmail_Monthly$] WHERE CONVERT(char(10),[Date],102)=@Date;
--INSERT
INSERT INTO [dbo].[ESOEmail_Monthly$]
SELECT [EMP_ID]
,[NAME]
,[DEPT]
,[DATE]
,[End Time]
,[LOGOUT]
,[ESO]
,[Team Manager]
,[Senior Manager]
,[SITE]
FROM #1
DROP TABLE #1