Не мучайся. Сделай два запроса, в котором из одной таблицы выбираются все банки, и вторым запросом выбираются все программы, а потом для каждого банка пробигайся циклом по программам и выкусывай необходимые программы. Но тут лучше смотреть какое будет количество банков и какое количество программ для каждого из них, а потом уже опираясь на эти данные выбирать оптимальный метод.
Возможно будет проще сделать как в самом верху и потом просто анализировать каждую запись, относится ли строка к тому же банку что и строка выше, если да, выводим программу для этого банка, если нет, то значит новый банк... Но при такой выборке будет оперативка забиваться лишней инфой (дублирование одной и той же инфы банка)
Так что определись с обьемами, подскажим что оптимальнее будет