Shockingly! You need to share your code to get a good answer!
Also - what version of Progress is involved? (Yes, it matters.)
Did you COUNT from embedded SQL-89, or via a 3rd party SQL tool (thus using SQL-92), or are you referring to the 4gl COUNT-OF function?
Did you try cross checking that result with a simple 4gl FOR EACH?
What specific value within dbanalys are you referring to? Record counts can be found in several places.
There are various reasons why the counts might not match. Some of them are due to bugs such as "duplicate unique rows". Or operational errors like loading data twice with "proutil load". Those can be fixed with an index rebuild.
Or you might have one or more of the SQL auto-truncate options enabled (that would apply if you are counting with SQL-92).
Other reasons are due to misunderstandings regarding how the counting methods work.
Keep track of any errors the index rebuild returns. It's possible, as Tom says, you have data in your table that's not in the index you used on the FOR EACH. The most likely cause is that you have duplicate data in the table that can't be indexed because of uniqueness constraints of the index.