Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server Msg 156,Levl 15,State 1,Line 1关键字'附近语法不正确;顶部';_Sql Server - Fatal编程技术网

Sql server Msg 156,Levl 15,State 1,Line 1关键字'附近语法不正确;顶部';

Sql server Msg 156,Levl 15,State 1,Line 1关键字'附近语法不正确;顶部';,sql-server,Sql Server,我的这段代码失败了。我不明白为什么我会收到这个消息。有谁能看一下,看看你有没有看到什么不对劲的地方 非常感谢 declare @ReportOrder int declare @numrows int declare @Section varchar(30) declare @Dept_Op varchar(5) declare @Dept varchar(30) declare @SDept_Op varchar(5) declare @

我的这段代码失败了。我不明白为什么我会收到这个消息。有谁能看一下,看看你有没有看到什么不对劲的地方

非常感谢

    declare @ReportOrder int
    declare @numrows int
    declare @Section varchar(30)
    declare @Dept_Op varchar(5)
    declare @Dept varchar(30)
    declare @SDept_Op varchar(5)
    declare @SDept varchar(30)
    declare @Class_Op varchar(5)
    declare @Class varchar(30)
    declare @Over_POS Int
    declare @year int
    declare @week int
    declare @Perc_To_Total float
    declare @Perc_Remaining float
    declare @LS smalldatetime
    declare @LYCARD_2NC smalldatetime

    declare @sql nvarchar(4000)

    select @year = datepart(yy,getdate())
    select @year = @year - 1
    select @week = staging.dbo.fn_Calendar_Week(getdate())
    select @LS = staging.dbo.fn_Last_Saturday(getdate())
    select @lyCARD_2NC = dateadd(yy,-1,@LS)

    Truncate table ReportData.dbo.rpt_Holiday_Top_Selling_Report_2NC
    Truncate table Staging.dbo.tmp_Top10_2NC

    declare cur cursor for select ReportOrder, numrows, Section, Dept_Op,              Dept, SDept_Op, SDept, Class_Op, Class, Over_POS
    from Reference.dbo.Holiday_Top_Selling_Config_new
    order by ReportOrder

    open cur
    fetch next from cur into @ReportOrder, @numrows, @Section, @Dept_Op,     @Dept, @SDept_Op, @SDept, @Class_Op, @Class, @Over_POS

    while @@Fetch_Status = 0
    begin


    select @sql = 'insert into    Reportdata.dbo.rpt_Holiday_Top_Selling_Report_2NC '
    select @sql = @sql + 'select top ' + cast(@numrows as char(2)) + ' '
    select @sql = @sql + cast(@ReportOrder as char(3)) + ' as PrintOrder,'
    select @sql = @sql + '''' + @Section + '''' + ' as Section,'
    select @sql = @sql + ' row_Number() over (order by t1.wtd_dollars desc) as Rank, '
    select @sql = @sql + ' t1.ISBN as TY_ISBN, '
    select @sql = @sql + ' t1.title as TY_Title, '
    select @sql = @sql + ' t1.Author as TY_Author, '
    select @sql = @sql + ' t1.Dept as TY_Dept_Num, '
    select @sql = @sql + ' t1.SDept as TY_SDept_Num, '
    select @sql = @sql + ' t1.Class as TY_Class_Num, '
    select @sql = @sql + ' t1.display_min, '
    select @sql = @sql + ' t1.Class_Name as TY_Class, '
    select @sql = @sql + ' t1.wtd_Dollars as TY_SLS$, '
    select @sql = @sql + ' t1.wtd_Units as TY_SLSU, '
    select @sql = @sql + ' 0 as Discount, '
    select @sql = @sql + ' t1.OnHand_2NC as OnHand, '
    select @sql = @sql + ' isnull(t1.Qty_OnOrder,0) as OnOrder, '
    select @sql = @sql + ' 0 as Proj, '
    select @sql = @sql + ' NULL as NNTC, '
    select @sql = @sql + ' NULL as LY_ISBN, '
    select @sql = @sql + ' NULL as LY_Title, '
    select @sql = @sql + ' NULL as LY_Author, '
    select @sql = @sql + ' NULL as LY_Dept_Num, '
    select @sql = @sql + ' NULL as LY_SDept_Num, '
    select @sql = @sql + ' NULL as LY_Class_Num, '
    select @sql = @sql + ' NULL as LY_On_Hand, '
    select @sql = @sql + ' NULL as LY_Class, '
    select @sql = @sql + ' NULL as LY_SLS$, '
    select @sql = @sql + ' NULL as LY_SLSU, '
    select @sql = @sql + ' NULL as Forecast_Thru, '
    select @sql = @sql + ' NULL as Week_42, '
    select @sql = @sql + ' NULL as Week_43, '
    select @sql = @sql + ' NULL as Week_44, '
    select @sql = @sql + ' NULL as Week_45, '
    select @sql = @sql + ' NULL as Week_46, '
    select @sql = @sql + ' NULL as Week_47, '
    select @sql = @sql + ' NULL as Week_48, '
    select @sql = @sql + ' NULL as Week_49 '
    select @sql = @sql + ' from dssdata.dbo.CARD_2NC t1'
    select @sql = @sql + ' where t1.dept ' + @Dept_Op + ' ' + @Dept 
    select @sql = @sql + ' and t1.SDept ' + @SDept_Op + ' ' + @SDept
    select @sql = @sql + ' and t1.Class ' + @Class_Op + ' ' + @Class

    if @Over_POS > 0
        select @sql = @sql + ' and t1.Retail > ' + cast(@Over_POS as char(3)) + ' '
        select @sql = @sql + ' order by wtd_Dollars desc '

    EXEC sp_executesql @sql

    select @sql = 'insert into Staging.dbo.tmp_Top10_2NC'
    select @sql = @sql + 'select top ' + cast(@numrows as char(3)) + ' '
    select @sql = @sql + 'row_Number() over (order by t1.LYWeek1dollars desc) as LYRank, '
    select @sql = @sql + 't1.ISBN as ISBN, '
    select @sql = @sql + 't1.Title as Title, '
    select @sql = @sql + 't1.Author, '
    select @sql = @sql + 't1.Dept, '
    select @sql = @sql + 't1.SDept, '
    select @sql = @sql + 't1.Class, '
    select @sql = @sql + 't1.OnHand_2NC, '
    select @sql = @sql + 't1.Class_Name, '
    select @sql = @sql + 't1.LYWeek1Dollars as Sls$, '
    select @sql = @sql + 't1.LYWeek1Units as SlsU '
    select @sql = @sql + 'from  dssdata.dbo.CARD_2NC t1 '
    select @sql = @sql + ' where t1.dept ' + @Dept_Op + ' ' + @Dept 
    select @sql = @sql + ' and t1.SDept ' + @SDept_Op + ' ' + @SDept
    select @sql = @sql + ' and t1.Class ' + @Class_Op + ' ' + @Class

    if @Over_POS > 0
        select @sql = @sql + ' and t1.retail > ' + cast(@Over_POS as char(3)) + ' '
        select @sql = @sql + ' order by LYWeek1Dollars desc '

    EXEC sp_executesql @sql

    select @sql = 'update ReportData.dbo.rpt_Holiday_Top_Selling_Report_2NC '
    select @sql = @sql + 'Set   LY_Title = Title, '
    select @sql = @sql + 'LY_ISBN = ISBN, '
    select @sql = @sql + 'NNTC = (Proj + (TY_SLSU * 3)) - (ReportData.dbo.rpt_Holiday_Top_Selling_Report_2NC.onHand + OnOrder), '
    select @sql = @sql + 'LY_Author = Author, '
    select @sql = @sql + 'LY_Dept_Num = Dept_Num, '
    select @sql = @sql + 'LY_SDept_Num = SDept_Num, '
    select @sql = @sql + 'LY_Class_Num = Class_Num, '
    select @sql = @sql + 'LY_OnHand = Staging.dbo.tmp_Top10_2NC.OnHand, '
    select @sql = @sql + 'LY_Class = Class, '
    select @sql = @sql + 'LY_SLS$ = SLS$, '
    select @sql = @sql + 'LY_SLSU = SLSU '
    select @sql = @sql + 'from  Staging.dbo.tmp_Top10_2NC'
    select @sql = @sql + 'where Staging.dbo.tmp_Top10_2NC.LYRank = Rank '
    select @sql = @sql + 'and Section = ' + '''' + @Section + ''''


    EXEC sp_executesql @sql

    truncate table Staging.dbo.tmp_Top10_NEW

    fetch next from cur into @ReportOrder, @numrows, @Section, @Dept_Op,      @Dept, @SDept_Op, @SDept, @Class_Op, @Class, @Over_POS
   end 

   close cur
   deallocate cur

在末尾缺少一个空格

选择@sql='insert into Staging.dbo.tmp\u Top10\u 2NC'


在末尾缺少一个空格

选择@sql='insert into Staging.dbo.tmp\u Top10\u 2NC'


尝试添加
print@sql
before
exec sp_executesql@sql
这样您和其他人都可以看到正在执行的代码。谢谢-我会尝试一下。我无法解决的问题是,为什么您首先使用带有游标的动态sql?整个过程看起来可以用2次插入和1次更新来代替。没有循环或游标,也没有动态sql。请尝试添加
print@sql
before
exec sp_executesql@sql
这样您和其他人都可以看到正在执行的代码。谢谢-我会尝试一下。我无法解决的问题是,为什么您首先使用带有游标的动态sql?整个过程看起来可以用2次插入和1次更新来代替。没有循环或游标,也没有动态sql。你的眼光真不错,谢谢拉马克。但kodos需要用户3352326来发布脚本。必须使用脚本在本地进行检查。谢谢!这确实消除了我收到的第一条错误消息。Tak-现在我收到了这个错误消息。Msg 102,15级,状态1,第1行“.”附近的语法不正确。既然你很快就看到了最后一个问题,你也能把这个问题弄清楚吗?非常感谢@user3352326您必须根据@SqlZim注释添加
print@sql
before
EXEC sp_executesql@sql
。您将在消息中看到查询的结果。对不起,没有你的桌子结构。你的眼睛很好看。谢谢拉马克。但kodos需要用户3352326来发布脚本。必须使用脚本在本地进行检查。谢谢!这确实消除了我收到的第一条错误消息。Tak-现在我收到了这个错误消息。Msg 102,15级,状态1,第1行“.”附近的语法不正确。既然你很快就看到了最后一个问题,你也能把这个问题弄清楚吗?非常感谢@user3352326您必须根据@SqlZim注释添加
print@sql
before
EXEC sp_executesql@sql
。您将在消息中看到查询的结果。抱歉,没有您的表结构。
select @sql = 'insert into Staging.dbo.tmp_Top10_2NC '
select @sql = @sql + 'select top ' + cast(@numrows as char(3)) + ' '