2

I have this custom function querying a group by from a datalist. As a result I receive my unique query result but as nested objects [{substance: 'value'}]. It would prefer my response to be [value, value, value].

SQL:

create or replace function api.substances(substance_group text) returns table(substance text) 
as 'select api.emissions.substance from api.emissions where api.emissions.substance_group = $1 group by api.emissions.substance;'
language sql;

Response:

[
  {
    "substance": "Arseen"
  },
  {
    "substance": "Benzo[b]fluorantheen"
  },
  ...
]

Response required:

[
  "Arseen",
  "Benzo fluorantheen",
  ...
]
Hoetmaaiers
  • 3,413
  • 2
  • 19
  • 29

1 Answers1

1

You'll need to return an array of text(text[]) instead of table(text) and use the array_agg function on the query. Like:

create or replace function api.substances(substance_group text) returns text[] as $$
  select array_agg(api.emissions.substance)
  from api.emissions
  where api.emissions.substance_group = $1
  group by api.emissions.substance;
$$ language sql;
Steve Chavez
  • 931
  • 10
  • 13