请求排查这段SQL Server查询语句的错误
排查你的SQL Server查询语句问题
嘿,我帮你揪出这段SQL里几个明显的问题,先从最致命的硬伤说起:
CASE语句语法严重错误
你在第一个CASE的THEN分支后直接嵌套了第二个CASE,但第一个CASE完全没写END来闭合,这完全不符合SQL的语法规范。每个CASE结构都必须以END收尾,嵌套CASE也得把内层CASE放在外层CASE的某个分支里。
你这段里的错误片段:sum( case when LS_INV_BACK.sell_price<=0.0 or LS_INV_BACK.sell_price is null or LS_INV_BACK.retail_price<=0 or LS_INV_BACK.retail_price is null then 0.0 case when left(product.prod_no,1)='3' and lower(product.monad)='kg'...这里第一个CASE在
then 0.0之后就直接接了第二个CASE,数据库根本无法解析这个混乱的结构。语句不完整,存在截断
最后部分的right(rtr...明显没写完,这种半截的语句肯定会直接报错,你得把完整的SQL补全——比如应该是right(rtrim(某个字段), 长度值)这类完整的写法。潜在的分组问题(如果语句补全后)
你用了sum()聚合函数,但SELECT列表里还放了ls_inv_back.cli_no、client.cli_name这类非聚合列。按照SQL标准,这些非聚合列必须全部出现在GROUP BY子句里,不然SQL Server会抛出“选择列表中的列无效,因为它未包含在聚合函数或 GROUP BY 子句中”的错误(除非你开了旧版兼容模式,但这是非常不规范的写法)。
另外,建议你补全语句后,先拆分CASE逻辑单独测试——比如先写个简单的查询验证每个CASE分支的结果是否符合预期,再把它整合到聚合函数里,这样更容易排查逻辑问题。
内容的提问来源于stack exchange,提问作者sdfsaf asfsf
相关产品推荐
相关产品推荐

