如果表中还没有这些行,我正在尝试将数据从一个表复制到另一表中。另外,我想基于要复制的原始表中的列的值,添加第三张表中的列的值。
我继承了两个表,其中一个表将变得多余(因为将要使数据库失效),因此需要将信息移到设计上不相同的另一个表中(但是数据类型是这样) 。
INSERT INTO [AMData].[dbo].[AttendanceRecord] A ([TypeID], [Date], [EmpID], [EhrID], [SickReason], [AbsID])
SELECT
T.[ID], F.[EHrDate], F.[EHrEmpID], F.[EHrID], F.[EHRUserComment], F.[AbsID]
FROM
[Focus].[dbo].[AllAbsence] F
INNER JOIN
[AMData].[dbo].[AttendanceTypes] T ON F.[AbsID] = T.[FocusID]
WHERE
NOT EXISTS (SELECT *
FROM [AMData].[dbo].[AttendanceRecord] A, [Focus].[dbo].[AllAbsence] F
WHERE A.[EhrID] = F.[EHrID]
AND F.[EHrDate] BETWEEN '2018/01/01' AND '2018/12/01'
AND F.[AbsID] <> 0
AND F.[AbsID] <> 2);
尝试运行代码时出现语法错误。我不习惯运行插入代码,因此很可能显然是错误的。
答案 0 :(得分:1)
一个猜测,但是我怀疑问题是您在别名表AttendanceRecord
。您不能在INSERT
子句中为表加上别名。该错误实际上是在告诉您:
Ln:1列:47-'A'附近的语法不正确
删除A
,这将起作用(嗯,下面的SQL没有语法错误,所以我宽松地使用“ work”一词):
INSERT INTO [AMData].[dbo].[AttendanceRecord] ([TypeID],
[Date],
[EmpID],
[EhrID],
[SickReason],
[AbsID])
SELECT T.[ID],
F.[EHrDate],
F.[EHrEmpID],
F.[EHrID],
F.[EHRUserComment],
F.[AbsID]
FROM [Focus].[dbo].[AllAbsence] AS F
INNER JOIN [AMData].[dbo].[AttendanceTypes] AS T ON F.[AbsID] = T.[FocusID]
WHERE NOT EXISTS (SELECT *
FROM [AMData].[dbo].[AttendanceRecord] AS A,
[Focus].[dbo].[AllAbsence] AS F
WHERE A.[EhrID] = F.[EHrID]
AND F.[EHrDate] BETWEEN '2018/01/01' AND '2018/12/01'
AND F.[AbsID] <> 0
AND F.[AbsID] <> 2);