Der Index ist für deine Suchdatei mit den enthaltenen Kunden-Nr'n erforderlich.

Wenn du das Ergebnis als dynamischen SQL zusammenbaust, wie oben, kannst du die Ergebnisfelder ja auch casten:

select char(kdnr), count(*) from mytable a
where exists (select * from kdnrtable b where dec(a.kdnr, 7, 0) = b.kdnr)
group by char(kdnr)

Beim Fetch gibst du dann halt ein Zeichen- und ein Dezimalfeld an.

Wichtig ist natürlich, dass ein Zeichenfeld mit Kunden-Nr. auch immer numerisch gefüllt ist, sonst hast du Probleme beim cast dec(...).