--- cayenne-1.1-dev-2003-10-9-orig/src/cayenne/org/objectstyle/cayenne/access/trans/SelectTranslator.java	2003-10-09 05:18:50.000000000 -0500
+++ cayenne-1.1-dev-2003-10-9-cust/src/cayenne/org/objectstyle/cayenne/access/trans/SelectTranslator.java	2003-10-10 08:01:14.000000000 -0500
..-135,8 +135,9 @@
         // build GROUP BY
         buildGroupByList();
 
-        // build ORDER BY,
-        String orderByStr = new OrderingTranslator(this).doTranslation();
+        // build ORDER BY
+        OrderingTranslator orderingTranslator = new OrderingTranslator(this); 
+        String orderByStr = orderingTranslator.doTranslation();
 
         // assemble
         StringBuffer queryBuf = new StringBuffer();
..-153,6 +154,17 @@
             queryBuf.append(", ");
             appendColumn(queryBuf, i);
         }
+        
+        // append any column expressions used in the order by if this query 
+        // uses the DISTINCT modifier
+        if (forceDistinct || getSelectQuery().isDistinct()) {
+            List orderByColumnList = orderingTranslator.getOrderByColumnList();
+            int additionalColumnCount = orderByColumnList.size();
+            for (int i = 0; i < additionalColumnCount; i++) {
+                queryBuf.append(", ");
+                queryBuf.append((String) orderByColumnList.get(i));
+            }
+        }
 
         // append from clause
         queryBuf.append(" FROM ");