func (f *filterBuilder) generateHavingClauses() (string, []interface{}) {
	clause, args := f.andClauses(f.havingClauses)

	if f.subFilter != nil {
		c, a := f.subFilter.generateHavingClauses()
		if c != "" {
			clause = f.getSubFilterClause(clause, c)
			if len(a) > 0 {
				args = append(args, a...)
			}
		}
	}

	return clause, args
}
// generateHavingClauses generates the SQL having clause for this filter.
// All having clauses within the filter are ANDed together. This is combined
// with the sub-filter, which will use the applicable operator (AND/OR/AND NOT).
generateHavingClauses generates the SQL having clause for this filter.
All having clauses within the filter are ANDed together. This is combined
with the sub-filter, which will use the applicable operator (AND/OR/AND NOT).
// generateHavingClauses generates the SQL having clause for this filter . // All having clauses within the filter are ANDed together . This is combined // with the sub - filter which will use the applicable operator ( AND / OR / AND NOT ) .
func (f *filterBuilder) generateHavingClauses() (string, []interface{}) {
	clause, args := f.andClauses(f.havingClauses)
	if f.subFilter != nil {
		c, a := f.subFilter.generateHavingClauses()
		if c != "" {
			clause = f.getSubFilterClause(clause, c)
			if len(a) > 0 {
				args = append(args, a...)
			}
		}
	}
	return clause, args
}
func ( f * filterBuilder ) generateHavingClauses ( ) ( string , [ ] interface { } ) { clause , args := f . andClauses ( f . havingClauses ) if f . subFilter != nil { c , a := f . subFilter . generateHavingClauses ( ) if c != " " { clause = f . getSubFilterClause ( clause , c ) if len ( a ) > 0 { args = append ( args , a ... ) } } } return clause , args }
generateHavingClauses generates the SQL having clause for this filter.
generateHavingClauses generates the SQL having clause for this filter .