如何解决使用条件 IF 时 ASP 经典 SQL 查询中的语法错误
我正在尝试使用 IF 和 THEN 对 ASP 经典 SQL 查询中的不同元素进行排序,并尝试了许多不同的方法来使其工作......“问题孩子”是这样的:
StatsSQL = "SELECT COUNT(v.col) as num_not_null,COUNT(v.col) * 1.0 / COUNT(*) * 100 as percent_not_null,COUNT(*) as toltalColsNeedsFilled FROM EFP_EmploymentUser t CROSS APPLY (VALUES (t.ITAdvicedFirst),(t.ITAdvicedSecond),(t.ITDepartmentDone),(t.CFOAdvicedFirst),(t.CFOInfoProvided),(t.CFOAdvicedSecond),(t.CFODone),(t.EconomyAdviced),(t.EconomyDone)," & IF objFlowNotDone("Academy") = "yes" THEN Response.Write("(t.AcademyAdviced),(t.AcademyDone),") END IF IF objFlowNotDone("Publicator") = "yes" THEN Response.Write("(t.PublicatorAdviced),(t.PublicatorDone),") END IF & "(t.PortraitAdviced),(t.PortraitDone)) v(col) WHERE ID = '19';"
我得到的错误:
Microsoft VBScript compilation error '800a03ea'
Syntax error
/flow.asp,line 271
谁能帮我找到正确的方向来解决这个问题?
最好的问候
斯蒂格 :-)
解决方法
除非您确实希望将 Response.Write 语句的内容显示在您的输出中,否则您不应该使用 Response.Write,并且您确实需要为条件语句另起一行。这就是您似乎正在尝试做的事情。我假设您的 SQL 是正确的,这里唯一的问题是您的 VBScript。
StatsSQL = "SELECT COUNT(v.col) as num_not_null,COUNT(v.col) * 1.0 / COUNT(*) * 100 as percent_not_null,COUNT(*) as toltalColsNeedsFilled FROM EFP_EmploymentUser t CROSS APPLY (VALUES (t.ITAdvicedFirst),(t.ITAdvicedSecond),(t.ITDepartmentDone),(t.CFOAdvicedFirst),(t.CFOInfoProvided),(t.CFOAdvicedSecond),(t.CFODone),(t.EconomyAdviced),(t.EconomyDone)"
If objFlowNotDone("Academy") = "yes" THEN
StatsSQL = StatsSQL & ",(t.AcademyAdviced),(t.AcademyDone)"
End If
If objFlowNotDone("Publicator") = "yes" THEN
StatsSQL = StatsSQL & ",(t.PublicatorAdviced),(t.PublicatorDone)"
End If
StatsSQL = StatsSQL & ",(t.PortraitAdviced),(t.PortraitDone)) v(col) WHERE ID = '19';"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。