make string agg cut out blank and repeated strings. user/lew/reporter_string_agg
authorLlewellyn Marshall <llewellyn.marshall@ncdcr.gov>
Fri, 26 May 2023 13:52:56 +0000 (09:52 -0400)
committerLlewellyn Marshall <llewellyn.marshall@ncdcr.gov>
Fri, 26 May 2023 13:52:56 +0000 (09:52 -0400)
Open-ILS/src/perlmods/lib/OpenILS/Reporter/SQLBuilder.pm
Open-ILS/src/templates/staff/reporter/share/report_strings.tt2

index a559276..5a1f6d7 100644 (file)
@@ -893,7 +893,7 @@ package OpenILS::Reporter::SQLBuilder::Column::Transform::string_agg;
 
 sub toSQL {
     my $self = shift;
-    return 'STRING_AGG("' . $self->{_relation} . '"."' . $self->name . '"::text,\',\')';
+    return 'STRING_AGG(DISTINCT nullif("' . $self->{_relation} . '"."' . $self->name . '"::text,\'\'),\',\')';
 }
 
 sub is_aggregate { return 1 }
index cc49019..ab8d94d 100644 (file)
@@ -82,6 +82,7 @@ s.TFORMS_LABEL_AGE = '[% l( "Age") %]';
 s.TFORMS_LABEL_MONTHS_AGO = '[% l( "Months ago") %]';
 s.TFORMS_LABEL_QUARTERS_AGO = '[% l( "Quarters ago") %]';
 s.TFORMS_LABEL_SUM = '[% l( "Sum") %]';
+s.TFORMS_LABEL_STRING_AGG = '[% l( "String Aggregate") %]';
 s.TFORMS_LABEL_AVERAGE = '[% l( "Average") %]';
 s.TFORMS_LABEL_ROUND = '[% l( "Round") %]';
 s.TFORMS_LABEL_INT = '[% l( "Drop trailing decimals") %]';
@@ -173,6 +174,7 @@ s.TRANSFORMS_AGE = '[% l( "Age") %]';
 s.TRANSFORMS_MONTHS_AGO = '[% l( "Months ago") %]';
 s.TRANSFORMS_QUARTERS_AGO = '[% l( "Quarters ago") %]';
 s.TRANSFORMS_SUM = '[% l( "Sum") %]';
+s.TRANSFORMS_STRING_AGG = '[% l( "String Aggregate") %]';
 s.TRANSFORMS_AVERAGE = '[% l( "Average") %]';
 s.TRANSFORMS_ROUND = '[% l( "Round") %]';
 s.TRANSFORMS_INT = '[% l( "Drop trailing decimals") %]';