使用条件 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';"
我正在尝试使用 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';"