Tsql 关键字';作为';,但是line没有';as';

Tsql 关键字';作为';,但是line没有';as';,tsql,stored-procedures,syntax,ssms,Tsql,Stored Procedures,Syntax,Ssms,我正在修改一个存储过程,当我尝试执行时,我得到: Msg 156, Level 15, State 1, Procedure vtg_asmbltimephasedashassy, Line 20 Incorrect syntax near the keyword 'AS' 但是当我转到第20行时,没有关键字“as”,也没有直接在第20行之前或之后的行中。也许我数错了 当我数到第20行时,我得到的那一行是 jobmtl.partnum=partwhse.partnum FULL OU

我正在修改一个存储过程,当我尝试执行时,我得到:

Msg 156, Level 15, State 1, Procedure vtg_asmbltimephasedashassy, Line 20  
Incorrect syntax near the keyword 'AS'   
但是当我转到第20行时,没有关键字“as”,也没有直接在第20行之前或之后的行中。也许我数错了

当我数到第20行时,我得到的那一行是

jobmtl.partnum=partwhse.partnum FULL OUTER JOIN  
有人能告诉我解决这个问题需要做什么吗?我的enitre存储过程如下所示

USE [mfgsys803]
GO
/****** Object:  StoredProcedure [dbo].[vtg_asmbltimephasedashassy]    Script Date:   01/08/2013 12:59:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER proc [dbo].[vtg_asmbltimephasedashassy] @p_plant varchar(max) 
as 
begin 
set nocount on;

SELECT     jobhead.jobnum, sum(partwhse.onhandqty) as 'onhandqty', jobhead.partnum, jobhead.revisionnum, jobhead.prodqty, jobhead.startdate, jobhead.duedate, jobhead.reqduedate, 
                  jobhead.commenttext, jobmtl.issuedcomplete, jobmtl.issuedqty, jobmtl.mtlseq, jobmtl.partnum AS 'mtlpart', jobmtl.requiredqty, jobmtl.qtyper, jobmtl.reqdate, 
                  partwhse.warehousecode, prodgrup.description
FROM         jobmtl LEFT OUTER JOIN
                  partwhse INNER JOIN
                  warehse ON partwhse.company = warehse.company AND partwhse.warehousecode = warehse.warehousecode ON jobmtl.company = partwhse.company AND 
                  jobmtl.partnum = partwhse.partnum FULL OUTER JOIN
                  prodgrup INNER JOIN
                  jobhead ON prodgrup.company = jobhead.company AND prodgrup.prodcode = jobhead.prodcode ON jobmtl.company = jobhead.company AND 
                  jobmtl.jobnum = jobhead.jobnum
WHERE     (jobhead.jobreleased = 0) AND (jobhead.jobfirm = 1) AND (jobhead.jobengineered = 1) AND (jobhead.company = 'lot') and  (prodgrup.description like '%assy%') and (jobhead.plant=@p_plant) and (warehse.plant=@p_plant)

group by     jobhead.jobnum, jobhead.partnum, jobhead.revisionnum, jobhead.prodqty, jobhead.startdate, jobhead.duedate, jobhead.reqduedate, 
                  jobhead.commenttext, jobmtl.issuedcomplete, jobmtl.issuedqty, jobmtl.mtlseq, jobmtl.partnum AS 'mtlpart', jobmtl.requiredqty, jobmtl.qtyper, jobmtl.reqdate, 
                  partwhse.warehousecode, prodgrup.description


end 

通过以下方式将此部分从组中取出:

jobmtl.partnum AS 'mtlpart'
成功

jobmtl.partnum 

行号只是表示包含错误的SQL语句的行号。。。这是整个Select语句。As在组中由
jobmtl.partnum作为'mtlpart',
显示,需要显示。

非常感谢!!只要它允许,我就会将它标记为答案。在SQL Server中,错误会报告在语句开始的行上。因此,如果您创建了一条跨越1000行的语句,而最后一行出现了错误,那么错误将在第一行报告。@Damien_the_unsiever-对于解析错误来说,情况并非如此。它是
GO
后面的第20行,因此它是提交批次中的第20行
@Jennifer
双击错误消息会将您带到有问题的行。@MartinSmith-批处理中第1000行的错误,其中语句从批处理中的第1行开始,将在第1行报告为错误。我想说的一点是,仅仅依靠报告的行号并不能帮助人们定位错误。@Damien_The_unsiever-是的,运行时错误会,但这是一个语法错误,所以在本例中确实有帮助。