我在使用 SQL Server 2005 时收到以下错误消息
消息 120,级别 15,状态 1,过程 usp_AttributeActivitiesForDateRange,第 18 行
INSERT 语句的选择列表包含的项目少于插入列表。 SELECT 值的数量必须与 INSERT 列的数量匹配。
我已将选择列表和插入列表复制并粘贴到 Excel 中,并验证每个列表中的项目数量相同。两个表都没有在插入语句或选择列表中列出附加主键字段。我不确定这是否相关,但可能值得怀疑。这是我的存储过程的来源:
CREATE PROCEDURE [dbo].[usp_AttributeActivitiesForDateRange]
(
@dtmFrom DATETIME,
@dtmTo DATETIME
)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @dtmToWithTime DATETIME
SET @dtmToWithTime = DATEADD(hh, 23, DATEADD(mi, 59, DATEADD(s, 59, @dtmTo)));
-- Get uncontested DC activities
INSERT INTO AttributedDoubleClickActivities
([Time],
[User-ID],
[IP],
[Advertiser-ID],
[Buy-ID],
[Ad-ID],
[Ad-Jumpto],
[Creative-ID],
[Creative-Version],
[Creative-Size-ID],
[Site-ID],
[Page-ID],
[Country-ID],
[State Province],
[Areacode],
[OS-ID],
[Domain-ID],
[Keyword],
[Local-User-ID],
[Activity-Type],
[Activity-Sub-Type],
[Quantity],
[Revenue],
[Transaction-ID],
[Other-Data],
Ordinal,
[Click-Time],
[Event-ID]) SELECT
[Time],
[User-ID],
[IP],
[Advertiser-ID],
[Buy-ID],
[Ad-ID],
[Ad-Jumpto],
[Creative-ID],
[Creative-Version],
[Creative-Size-ID],
[Site-ID],
[Page-ID],
[Country-ID],
[State Province],
[Areacode],
[OS-ID],
[Domain-ID],
[Keyword],
[Local-User-ID]
[Activity-Type],
[Activity-Sub-Type],
[Quantity],
[Revenue],
[Transaction-ID],
[Other-Data],
REPLACE(Ordinal, '?', '') AS Ordinal,
[Click-Time],
[Event-ID]
FROM Activity_Reports
WHERE [Time] BETWEEN @dtmFrom AND @dtmTo
AND REPLACE(Ordinal, '?', '') IN
(SELECT REPLACE(Ordinal, '?', '') FROM Activity_Reports
WHERE [Time] BETWEEN @dtmFrom AND @dtmTo
EXCEPT
SELECT CONVERT(VARCHAR, TripID) FROM VisualSciencesActivities
WHERE [Time] BETWEEN @dtmFrom AND @dtmTo);
END
GO