如何修复SQL中的语法结束?

如何修复SQL中的语法结束?,sql,sql-server,tsql,Sql,Sql Server,Tsql,另一个语法错误出现在我的查询中,如下所示(错误出现在最后一段中)。 我的第一篇与此查询相关的帖子在添加了一个缺少的“案例”后得到了修复,但这篇帖子是在我尝试执行它之后出现的 CASE WHEN CONVERT(date,rd.F254) Between CONVERT(date,getdate()-7) AND CONVERT(date, getdate()-1) THEN rd.F64 END AS QtyLastWeek, CASE WHEN CONVERT(date,rd.F254) &

另一个语法错误出现在我的查询中,如下所示(错误出现在最后一段中)。 我的第一篇与此查询相关的帖子在添加了一个缺少的“案例”后得到了修复,但这篇帖子是在我尝试执行它之后出现的

CASE WHEN CONVERT(date,rd.F254) Between CONVERT(date,getdate()-7) AND CONVERT(date, getdate()-1) THEN rd.F64 
END AS QtyLastWeek,
CASE WHEN CONVERT(date,rd.F254) <= CONVERT(date,getdate()-8) THEN rd.F64 
END AS Qty2WeeksAgo
INTO idb_datastore.dbo.[Testing]
FROM  SMSSERVER01.STORESQL.dbo.OBJ_TAB ob
        INNER JOIN SMSSERVER01.STORESQL.dbo.LOC_TAB lo ON ob.F01 = lo.F01 
      INNER JOIN SMSSERVER01.STORESQL.dbo.COST_TAB co ON ob.F01 = co.F01 
    INNER JOIN SMSSERVER01.STORESQL.dbo.RPT_ITM_D rd ON ob.F01 = rd.F01 
  INNER JOIN SMSSERVER01.STORESQL.dbo.CAT_TAB ca ON ob.F17 = ca.F17 
WHERE rd.F254 >=getDate()-14 AND co.F90 = 1 AND co.F08 IS NULL AND F1034 = 3
GROUP BY lo.F117,
     ob.F01,
     ob.F155,
     ob.F29,
     ob.F22,
     ca.F1023,
     co.F90,
     co.F08,
     co.F27,
     rd.F1034,
     CASE WHEN CONVERT(date,rd.F254) Between CONVERT(date,getdate()-7) AND CONVERT(date, getdate()-1) THEN rd.F64 END AS QtyLastWeek
    CASE WHEN CONVERT(date, rd.F254) <= CONVERT(date,getdate()-8) THEN 
    rd.F64 END AS Qty2WeeksAgo
在CONVERT(date,getdate()-7)和CONVERT(date,getdate()-1)之间转换(date,rd.F254)时的情况,然后是rd.F64
以QtyLastWeek结束,
CONVERT(date,rd.F254)=getDate()-14且co.F90=1且co.F08为空且F1034=3时的大小写
由lo.F117分组,
ob.F01,
ob.F155,
ob.F29,
ob.F22,
约F1023,
co.F90,
co.F08,
co.F27,
F1034路,
当在CONVERT(日期,getdate()-7)和CONVERT(日期,getdate()-1)之间转换(日期,rd.F254)时,rd.F64结束为QtyLastWeek

转换时的大小写(日期,rd.F254)如果需要两列,则需要两个大小写

CASE WHEN CONVERT(date,rd.F254) 
    Between CONVERT(date,getdate()-7) AND CONVERT(date, getdate()-1) 
    THEN rd.F64 END AS QtyLastWeek,
CASE WHEN CONVERT(date, rd.F254) <= CONVERT(date,getdate()-8) 
    THEN rd.F64 END AS Qty2WeeksAgo
转换时的情况(日期,rd.F254) 在转换(日期,getdate()-7)和转换(日期,getdate()-1)之间 然后rd.F64结束为QtyLastWeek,
转换时的案例(日期,rd.F254)您在第二次比较时错误地输入了案例

CASE WHEN CONVERT(date,rd.F254) Between CONVERT(date,getdate()-7) AND CONVERT(date, getdate()-1) THEN rd.F64 END AS QtyLastWeek,

case WHEN CONVERT(date, rd.F254) <= CONVERT(date,getdate()-8) THEN rd.F64 END AS Qty2WeeksAgo
在CONVERT(date,getdate()-7)和CONVERT(date,getdate()-1)之间转换(date,rd.F254)时,rd.F64结束为QtyLastWeek,

CONVERT(date,rd.F254)时的case我不确定这是否是导致错误的原因,但您不需要在GROUP BY子句中使用
作为别名。您只需要在“选择”列表中使用它

因此,在查询的底部(GROUP BY之后),您可以将
作为QtyLastWeek
删除,将
作为Qty2WeeksAgo删除


如果这不能解决问题,那么错误必须在您现在在问题中显示的查询部分之前。在您当前显示的其余代码中,我看不到任何错误。

您为什么再次问这个问题?第一个问题的答案对你没有帮助吗?伙计,这是一个不同的问题,甚至不是相同的函数。在将其标记为副本之前请先阅读,也许吧?你能给我指出区别吗?不知何故,我忽略了它……前一个是“WHEN”(第22行)上的语法错误,我已经纠正并执行了这个错误。现在,我在查询底部(第44行)的“AS”附近发现了一个语法错误。您还需要什么?但这两个问题中的代码是相同的,错误的原因也是相同的。您是否尝试了第二个问题中第一个问题的代码修复?然后您应该更新您的问题并添加完整的查询代码我看到了相同的事情。需要删除别名并添加逗号以指示组byOh中列的结尾是的,缺少逗号肯定会导致错误,good catch@nonprogrammer刚刚修改并执行,错误消息现在是:Msg 156,级别15,状态1,过程[…],第45行关键字“CASE”附近的语法不正确。是否更正了GROUP BY中第一个CASE之后缺少的逗号?您可以发布当前生成错误的代码吗?是的,我删除了AS别名并添加了逗号。下面是最新错误:Msg 8120,级别16,状态1,过程idb_dataSTORESQLTesting,第18行列“SMSSERVER01.STORESQL.dbo.RPT_ITM_D.F64”在select列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。我想别名应该在那里。