Я хочу УДАЛИТЬ данные из таблицы перед выполнением INSERT INTO, однако я продолжаю получать сообщение об ошибке:
Ошибка вставки: имя столбца или количество предоставленных значений не соответствует определению таблицы.
Я также попытался определить столбцы, в которые должны вводиться данные, как часть оператора INSERT INTO, но затем возникли проблемы с именами столбцов, даже если они правильные. У меня такое чувство, что проблемы связаны с тем, что я выбрал 2 записи PostCode и преобразовал их в 1, но если кто-то сможет пролить свет на это, это будет очень полезно.
Мой код можно найти ниже, если вы хотите, чтобы я добавил код, в котором я разделял имена столбцов, дайте мне знать. Таким образом, вы знаете, что выбранные поля - это все поля в таблице курса, кроме AutoNum, который является первичным ключом автоматического номера, и SSMA_TimeStamp, который является меткой времени.
BEGIN
DELETE dbo.Course
INSERT INTO dbo.Course
SELECT
RTRIM( CAST (sd.[RefNo] AS nvarchar(50))) AS 'Student Ref No',
sd.[FirstForeName] AS Forename,
sd.[Surname],
sd.[Address1],
sd.[Address2],
sd.[Address3],
sd.[Address4],
sd.[DateOfBirth] AS DOB,
sd.[PostCodeOut] + ' ' + sd.[PostCodeIn] AS 'Post Code',
o.[Name] AS 'Course Name',
o.[Code] As 'Course Code',
e.[StartDate] AS 'Start Date',
e.[ExpectedGLH] AS 'Exp GLH',
e.[ExpectedEndDate] AS 'Expected End Date',
e.[ActualEndDate] AS 'Actual End Date',
e.[Grade] AS 'Grade',
ou.[Description] AS Outcome,
cs.[Description] AS 'Completion Status',
sd.[Tel1] AS 'Tel 1'
FROM [xxxxxxx].[xxxxxx].[dbo].[StudentDetail] sd
INNER JOIN [xxxxxxx].[xxxxxx].[dbo].[Enrolment] e
ON sd.[StudentDetailID] = e.[StudentDetailID]
Inner JOIN [xxxxxxx].[xxxxxx].[dbo].[Offering] o
ON o.[OfferingID] = e.[OfferingID]
INNER JOIN [xxxxxxx].[xxxxxx].[dbo].[CompletionStatus] cs
ON cs.[CompletionStatusID] = e.[CompletionStatusID]
INNER JOIN [xxxxxxx].[xxxxxx].[dbo].[Outcome] ou
ON ou.[OutcomeID] = e.[OutcomeID]
WHERE sd.[AcademicYearID] = '09/10'
AND
o.[Code] LIKE '%-ee%'
AND
o.[Name] LIKE '%-%dl%'
ORDER BY
sd.[RefNo]