Реляционные базы данных работают на множестве условий сопоставления данных и очень хороши в этом. Они, однако, очень плохо обрабатывают единичные предметы. Научитесь думать, это условия наборов. Ваш процесс должен пройти таблицу исходных данных 5 раз (1 для процесса группы и подсчета). Хотя циклы иногда являются необходимым злом, они являются последним средством. Это можно сделать в 1 операторе, передавая источник 1 раз.
insert into mynewtable
(group, hisp_m, hisp_f, cauc_m, cauc_f)
select group_code
, sum(hisp_m)
, sum(hisp_f)
, sum(cauc_m)
, sum(cauc_f)
from
( select group_code,
, case when sex = 'F' AND ethn_code = 'H' then 1 else 0 end hisp_f
, case when sex = 'M' AND ethn_code = 'H' then 1 else 0 end hisp_m
, case when sex = 'F' AND ethn_code = 'C' then 1 else 0 end cauc_f
, case when sex = 'M' AND ethn_code = 'C' then 1 else 0 end cauc_m
from youroldtable
)
group by group_code;
Кстати, НЕ используйте группу в качестве имени столбца. Это зарезервированное слово, и из-за этого очень трудно найти ошибки.