You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行SQL查询时遇‘Invalid column name '2017-09'’错误,请求排查

解决SQL查询中“Invalid column name '2017-09'”错误

嘿,这个错误的原因其实很好找——从错误提示就能看出来,数据库把你写的"2017-09"当成列名了,而不是你想要的日期字符串值!

问题根源

在SQL Server(从你的语法和错误提示判断用的是这个数据库)里,双引号(")是用来引用数据库对象名称(比如列名、表名)的,而字符串值应该用单引号(')来包裹。你所有用双引号括起来的字符串(比如"1"、"Closed"、"2017-09"),数据库都误以为是列名,自然找不到就报错了。

另外还有个小细节:你在比较数值类型字段(比如FullHHRG > "0")的时候也用了双引号,虽然有些数据库会自动做类型转换,但这不太规范,还可能带来性能问题,最好改成直接用数值。

修复后的完整SQL

SELECT 
    COUNT(CASE WHEN (SOC = '1' AND MonthStart='2017-09') THEN 1 ELSE NULL END) AS SOCCount_2017_09,
    COUNT(CASE WHEN (Recert = '1' AND MonthStart='2017-09') THEN 1 ELSE NULL END) AS RecertCount_2017_09,
    COUNT(CASE WHEN (Recert = '1' AND MonthStart='2017-09') THEN 1 ELSE NULL END) AS RecertPer1_2017_09,
    COUNT(CASE WHEN (MonthStart='2017-09') THEN 1 ELSE NULL END) AS TotalEpisode_2017_09,
    ROUND(AVG(CASE WHEN (FullHHRG > 0 AND MonthStart='2017-09') THEN FullHHRG ELSE NULL END),2) AS AvgFullHHRG_2017_09,
    ROUND(AVG(CASE WHEN (CMW > 0 AND MonthStart='2017-09') THEN CMW ELSE NULL END),3) AS AvgCMW_2017_09,
    COUNT(CASE WHEN (LUPA = '1' AND MonthEnd='2017-09') THEN 1 ELSE NULL END) AS LUPAs_2017_09,
    COUNT(CASE WHEN (LUPA = '1' AND MonthEnd='2017-09') THEN 1 ELSE NULL END) AS LUPAPer_2017_09,
    COUNT(CASE WHEN (MonthEnd='2017-09' AND Status = 'Closed') THEN 1 ELSE NULL END) AS TotalEndEpisode_2017_09,
    ROUND(AVG(CASE WHEN (SN_Ep = '1' AND MonthEnd='2017-09') THEN SN_Visits ELSE NULL END),1) AS SNVisitsSNEps_2017_09,
    ROUND(AVG(CASE WHEN (THVisits > 0 AND MonthEnd='2017-09') THEN THVisits ELSE NULL END),1) AS THVisitsTHEps_2017_09,
    ROUND(AVG(CASE WHEN (Status = 'Closed' AND MonthEnd='2017-09') THEN TotVisits ELSE NULL END),1) AS AvgTotVisits_2017_09,
    ROUND(AVG(CASE WHEN (Status = 'Closed' AND MonthEnd='2017-09') THEN SNVisits ELSE NULL END),1) AS AvgSNVisits_2017_09,
    ROUND(AVG(CASE WHEN (Status = 'Closed' AND MonthEnd='2017-09') THEN TotTherapy ELSE NULL END),1) AS AvgTHVisits_2017_09,
    ROUND(AVG(CASE WHEN (NetHHRG > 0 AND MonthEnd='2017-09') THEN NetHHRG ELSE NULL END),2) AS AvgNetHHRG_2017_09,
    SUM(CASE WHEN (Status = 'Closed' AND MonthEnd='2017-09') THEN TH_Ep ELSE NULL END) AS TherapyPer_2017_09
FROM tb_Episode 
WHERE CustID = '27' 
  AND PayerType = 'Ep' 
  AND BranchID IN (241)

额外小贴士

  1. 如果你实在习惯用双引号包裹字符串,可以在查询前执行SET QUOTED_IDENTIFIER OFF,但非常不推荐这么做——这会破坏SQL的标准兼容性,以后换数据库或者和其他开发者协作时容易出问题。
  2. 对于数值类型的字段,直接用数值进行比较(比如> 0),而不是把数值当成字符串(> '0'),这样能避免不必要的类型转换,提升查询性能,还能减少潜在的错误。

内容的提问来源于stack exchange,提问作者Nikul Panchal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:43:37