def prepare_aggregate( aggregate_spec )
                        if aggregate_spec.group_by then
                                attr = @entity.attribute aggregate_spec.group_by
                                add_select_list(attr, attr.name, true)
                        else
                                group_by = nil
                        end
                        aggregate_spec.attributes.each do |agg_attr|
                                attr = @entity.attribute agg_attr[:name]
                                add_select_list_with_function(attr, agg_attr[:function], agg_attr[:key])
                        end
                        @where_clause = sql_for_qualifier aggregate_spec.qualifier
                        
                        
                        having_clause = nil
                        aggregate_spec.sort_orderings.each do |order|
                                add_order order
                        end
                        join_expression
                        tables  = table_list @entity
                        select  = nil 
                        sql = assemble_aggregate(aggregate_spec.qualifier,
                                aggregate_spec.having, aggregate_spec.sort_orderings, select,
                                @list_string, tables, join_clause,
                                where_clause, group_by_string, having_clause, order_by_string)
                        @statement = sql
                end