Если Вы предполагаете, что значения существуют для всех операций за оба года, затем просто делают внутреннее объединение следующим образом
select act.activity, t1.amount as "Total 2009", t2.amount as "Total 2008"
from Activities as act,
(select activityid, SUM(Amount) as amount
from Activities, Incomes
where Activities.UnitName = ? AND
Incomes.ActivityId = Activities.ActivityID
GROUP BY Activityid) as t1,
(select activityid, SUM(Amount) as amount
from Activities, Incomes2008
where Activities.UnitName = ? AND
Incomes2008.ActivityId = Activities.ActivityID
GROUP BY Activityid) as t2
WHERE t1.activityid= t2.activityid
AND act.activityId = t1.activityId
ORDER BY act.activity
, Если Вы не можете принять это, то посмотрите на выполнение внешнего объединения
Я бы сделал что-то вроде
(cat your_file_with_commands; cat) | sh your_script
Таким образом, когда файл with commands выполнено, второй cat
будет кормить ваш скрипт тем, что вы впоследствии наберете на stdin.
Вы пробовали использовать что-то вроде tail -f commandfile | command
Я думаю, что это должно направить строки файла в команду, не закрывая впоследствии дескриптор файла. Используйте -n
, чтобы указать количество строк, которые будут переданы, если tail -f
не перехватывает их все.