Ваша логика запутанна и трудна для подражания без примера данных, которые у вас есть, и примера данных, которые вы хотите ... но перевод вашего псевдокода в sql дает:
Declare
var1 = Выбрать col2 из таблицы1, где col1 = '[table2.col2 value]';
В моем запросе называется "найти"
var2 = Выбрать col3 из таблицы1, где col3 = var1;
var3 = Выберите col4 из таблицы1, где col3 = var1;
Достигается присоединением таблицы к «находке»
Начало
Если var2 = var1
Затем выберите SUM (var3) As "Total";
Конец
Достигается с суммой var3 только в тех строках, где var1 = var2, в "ifpart"
SELECT SUM(var3) FROM
(
SELECT alsot1.col3 as var2, alsot1.col4 as var3
FROM
table1 alsot1
INNER JOIN
(
SELECT t1.col2 as var1
FROM table1 t1 INNER JOIN table2 t2 ON t1.col1 = t2.col2
) find
ON find.var1 = alsot1.col3
) ifpart
WHERE
var1 = var2
Это можно упростить, но я представляю это так, потому что это соответствует вашему пониманию проблемы. Оптимизатор запросов в любом случае перезапишет его, когда придет время его запускать, поэтому стоит только начать разбираться с тем, как это делается, если производительность низкая
Кстати, вы четко сказали, что две таблицы объединяются через общее имя col2, но вы тогда в своем псевдокоде сказали, что таблицы объединяются в col1 = col2. Я следовал вашему псевдокоду