使用条件 IF 时 ASP 经典 SQL 查询中的语法错误

syntax error in ASP Classic SQL Query when using conditional IF

我正在尝试使用 IF 和 THEN 在 ASP 经典 SQL 查询中整理出不同的元素,并尝试了许多不同的方法来让它工作..“问题 child" 是这样的:

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';"