Asp classic 使用条件IF时ASP Classic SQL查询中的语法错误

Asp classic 使用条件IF时ASP Classic SQL查询中的语法错误,asp-classic,Asp Classic,我正在尝试使用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 (

我正在尝试使用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
有谁能帮我找到解决这个问题的正确方向吗

致意


Stig:-

您不应该使用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';"

这回答了你的问题吗?