Unabhängig von den tatsächlichen Spalten entscheidet ja die Where-Bedingung über die Anzahl Sätze, also müssen 2 Abfragen gemacht werden:

1. select count(*) from ... where ...
2. select f1, f2, ... from ... where ...

Wenn die Daten aber sowieso heruntergeladen werden müssen, gibt es noch die folgende Möglichkeit:

with
xTable (f1, f2, f3, ...) as
(select f1, f2, f3, ... from ... where ...)

select count(*), xTable.* from xTable

Durch die With-Bestimmung werden die Daten auf der AS/400 in einem temporären Bereich (QTEMP) geladen und vom nachfolgenden Select dann tatsächlich abgerufen.

Alternativ ab V5:

select count(*), x.* from (select ...) as x