Vamos a ver si al final podemos solucionarlo:
<%
Dim valores(100)
Dim I_valores
........
.........
'Supongamos que aquí ya has almacenado los valores y tienes la variable I_valores que es la cantidad de valores almacenados. 'Aquí damos el valor inicial del sql.
sql = "SELECT tabla1.Id, tabla1.Nombre FROM tabla1"
'En el For vamos creando la clausula FOR, la WHERE
C_For = ""
C_Where = ""
IFor = 1
For IFor=1 to I_valores
C_For = C_For & ", (SELECT id2 AS id_" & IFor & " FROM tabla2 WHERE dato2='" & valores(IFor) & "') cns_" & IFor
if IFor=1 thenC_Where = " WHERE tabla1.id1=cns_" & IFor & ".id_" & IFor
elseC_Where = C_Where & " AND tabla1.id1=cns_" & IFor & ".id_" & IFor
end if
Next
sql = sql & C_For & C_Where
%>
Creo que con este código puedes conseguir lo que pretendes. A partir de este ejemplo puedes complicarlo más. Por ejemplo podrías querer extraer campos de las subconsultas etc, el procedimiento sería el mismo, en otra variable almacenarías los campos.