Method: ArelExtensions::Visitors::MSSQL#visit_ArelExtensions_Nodes_GroupConcat

Defined in:
lib/arel_extensions/visitors/mssql.rb

#visit_ArelExtensions_Nodes_GroupConcat(o, collector) ⇒ Object

TODO;



612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
# File 'lib/arel_extensions/visitors/mssql.rb', line 612

def visit_ArelExtensions_Nodes_GroupConcat o, collector
  collector << '(STRING_AGG('
  collector = visit o.left, collector
  collector << Arel::Visitors::Oracle::COMMA
  collector =
    if o.separator && o.separator != 'NULL'
      visit o.separator, collector
    else
      visit Arel.quoted(','), collector
    end
  collector << ') WITHIN GROUP (ORDER BY '
  if o.order.present?
    o.order.each_with_index do |order, i|
      collector << Arel::Visitors::Oracle::COMMA if i != 0
      collector = visit order, collector
    end
  else
    collector = visit o.left, collector
  end
  collector << '))'
  collector
end