diff --git a/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java b/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java
index 6d6d723..c7e41a1 100644
--- a/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java
+++ b/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java
@@ -1024,7 +1024,6 @@
         }
 
         boolean isGroupBy = false;
-        boolean isCountGroup = false;
         ModelViewEntity modelViewEntity = null;
         if (modelEntity instanceof ModelViewEntity) {
             modelViewEntity = (ModelViewEntity) modelEntity;
@@ -1055,20 +1054,11 @@
                     // if the field has a function already we don't want to count just it, would be meaningless
                     sqlBuffer.append("COUNT(DISTINCT *) ");
                 } else {
-                    isCountGroup = true;
-                    StringBuilder sqlBufferTMP = new StringBuilder("SELECT COUNT(*) FROM(");
-                    sqlBuffer.append("DISTINCT ");
-                    for (int i = 0; i < selectFields.size() - 1; i++) {
-                        ModelViewEntity.ModelAlias tmpMA = modelViewEntity != null ? modelViewEntity.getAlias(selectFields.get(i).getName()) : null;
-                        if (tmpMA != null && !tmpMA.getColAlias().isEmpty()) {
-                            sqlBuffer.append(selectFields.get(i).getColValue() + " as " + tmpMA.getColAlias() + ",");
-                        } else {
-                            sqlBuffer.append(selectFields.get(i).getColValue() + ",");
-                        }
-                    }
-                    sqlBuffer.append(selectFields.get(selectFields.size() - 1).getColValue());
-                    sqlBufferTMP.append(sqlBuffer);
-                    sqlBuffer = sqlBufferTMP;
+                    sqlBuffer.append("COUNT(DISTINCT ");
+                    // this only seems to support a single column, which is not desirable but seems a lot better than no columns or in certain cases all columns
+                    sqlBuffer.append(firstSelectField.getColValue());
+                    // sqlBuffer.append(modelEntity.colNameString(selectFields, ", ", "", datasource.aliasViews));
+                    sqlBuffer.append(")");
                 }
             } else {
                 sqlBuffer.append("COUNT(DISTINCT *) ");
@@ -1108,9 +1098,6 @@
         if (isGroupBy) {
             sqlBuffer.append(") TEMP_NAME");
         }
-        if (isCountGroup) {
-            sqlBuffer.append(") TEMP_COUNT_NAME");
-        }
 
         String sql = sqlBuffer.toString();
         if (Debug.verboseOn()) Debug.logVerbose("Count select sql: " + sql, module);
