SQL 服务器 - 语法错误
SQL Server - Syntax Error
我不断收到:“关键字 'WHERE' 附近的语法错误。
我很难 'most' 找出原因。我已经消除了除此之外的所有语法错误,但我不知所措。任何帮助,将不胜感激。
WHERE 子句--- 我把包围在** where ** 给你。需要额外的眼睛!
DECLARE @vEndTime DateTime
Declare @vStartTime DateTime
DECLARE @sql4 nvarchar(4000)
DECLARE @parameters nvarchar(4000)
SET @parameters = '@vStartTime boards.DateEnd, @vEndTime boards.DateEnd'
set @vEndTime = '09/24/2011 12:00:00:00'
set @vStartTime = (SELECT MAX(DateEnd) FROM [UICTransfer_Archive].[dbo].[StageLotLineage])
WHILE @vStartTime < '09/24/2011 12:00:00:00'
BEGIN
SET @vEndTime = DATEADD (minute , 60 , @vStartTime )
select @sql4 = N'
INSERT INTO [UICTransfer_Archive].[dbo].[StageLotLineage](LineName, BoardBarcode, MachineProductName, DateStart,
DateEnd, MachineName, PlacementTime, RefID, CircuitNumber, FeederSlot, FeederTrack, Component,
LotNumber, ReelID)
SELECT
boards.LineName
,SUBSTRING(boards.BoardBarcode, 1, 5) AS BoardBarcode
-- ,board.BoardBarcode
,boards.MachineProductName
,convert(varchar,boards.DateStart,120)
,convert(varchar,boards.DateEnd,120)
,placements.MachineName
,convert(varchar,placements.PlacementTime,120)
,placements.RefID
,placements.CircuitNumber
,placements.FeederSlot
,placements.FeederTrack
,locations.Component
,locations.LotNumber
,locations.ReelID
FROM [UICTransfer_Archive].[dbo].[TrnsBoardComplete] as boards
LEFT JOIN [UICTransfer_Archive].[dbo].[TrnsPlacements] as placements
ON placements.BoardCompleteID = boards.BoardCompleteID
LEFT JOIN [UICTransfer_Archive].[dbo].[TrnsLocations] as locations
ON (locations.FeederSlot=placements.FeederSlot and
locations.FeederTrack = placements.FeederTrack and
locations.FeederStack = placements.FeederStack and
locations.FeederPallet = placements.FeederPallet and
locations.MachineName = placements.MachineName and
placements.PlacementTime >= locations.DateValidated and
(placements.PlacementTime <= locations.DateInvalidated
or locations.DateInvalidated IS NULL)
**where boards.DateEnd >= @vStartTime
and boards.DateEnd <= @vEndTime
and placements.CircuitNumber IS NOT NULL '**
EXEC SP_EXECUTESQL @sql4,@parameters,@vStartTime, @vEndTime
--select @@rowcount
SET @vStartTime = DATEADD (minute , 60 , @vEndTime )
END
您需要在联接的末尾添加右括号。
or locations.DateInvalidated IS NULL) )
(locations.FeederSlot=placements.FeederSlot and
locations.FeederTrack = placements.FeederTrack and
locations.FeederStack = placements.FeederStack and
locations.FeederPallet = placements.FeederPallet and
locations.MachineName = placements.MachineName and
placements.PlacementTime >= locations.DateValidated and
(placements.PlacementTime <= locations.DateInvalidated
or locations.DateInvalidated IS NULL))
我不断收到:“关键字 'WHERE' 附近的语法错误。
我很难 'most' 找出原因。我已经消除了除此之外的所有语法错误,但我不知所措。任何帮助,将不胜感激。 WHERE 子句--- 我把包围在** where ** 给你。需要额外的眼睛!
DECLARE @vEndTime DateTime
Declare @vStartTime DateTime
DECLARE @sql4 nvarchar(4000)
DECLARE @parameters nvarchar(4000)
SET @parameters = '@vStartTime boards.DateEnd, @vEndTime boards.DateEnd'
set @vEndTime = '09/24/2011 12:00:00:00'
set @vStartTime = (SELECT MAX(DateEnd) FROM [UICTransfer_Archive].[dbo].[StageLotLineage])
WHILE @vStartTime < '09/24/2011 12:00:00:00'
BEGIN
SET @vEndTime = DATEADD (minute , 60 , @vStartTime )
select @sql4 = N'
INSERT INTO [UICTransfer_Archive].[dbo].[StageLotLineage](LineName, BoardBarcode, MachineProductName, DateStart,
DateEnd, MachineName, PlacementTime, RefID, CircuitNumber, FeederSlot, FeederTrack, Component,
LotNumber, ReelID)
SELECT
boards.LineName
,SUBSTRING(boards.BoardBarcode, 1, 5) AS BoardBarcode
-- ,board.BoardBarcode
,boards.MachineProductName
,convert(varchar,boards.DateStart,120)
,convert(varchar,boards.DateEnd,120)
,placements.MachineName
,convert(varchar,placements.PlacementTime,120)
,placements.RefID
,placements.CircuitNumber
,placements.FeederSlot
,placements.FeederTrack
,locations.Component
,locations.LotNumber
,locations.ReelID
FROM [UICTransfer_Archive].[dbo].[TrnsBoardComplete] as boards
LEFT JOIN [UICTransfer_Archive].[dbo].[TrnsPlacements] as placements
ON placements.BoardCompleteID = boards.BoardCompleteID
LEFT JOIN [UICTransfer_Archive].[dbo].[TrnsLocations] as locations
ON (locations.FeederSlot=placements.FeederSlot and
locations.FeederTrack = placements.FeederTrack and
locations.FeederStack = placements.FeederStack and
locations.FeederPallet = placements.FeederPallet and
locations.MachineName = placements.MachineName and
placements.PlacementTime >= locations.DateValidated and
(placements.PlacementTime <= locations.DateInvalidated
or locations.DateInvalidated IS NULL)
**where boards.DateEnd >= @vStartTime
and boards.DateEnd <= @vEndTime
and placements.CircuitNumber IS NOT NULL '**
EXEC SP_EXECUTESQL @sql4,@parameters,@vStartTime, @vEndTime
--select @@rowcount
SET @vStartTime = DATEADD (minute , 60 , @vEndTime )
END
您需要在联接的末尾添加右括号。
or locations.DateInvalidated IS NULL) )
(locations.FeederSlot=placements.FeederSlot and
locations.FeederTrack = placements.FeederTrack and
locations.FeederStack = placements.FeederStack and
locations.FeederPallet = placements.FeederPallet and
locations.MachineName = placements.MachineName and
placements.PlacementTime >= locations.DateValidated and
(placements.PlacementTime <= locations.DateInvalidated
or locations.DateInvalidated IS NULL))