© 2026 Hedgehog Software, LLC

TwitterGitHubDiscord
More
CommunitiesDocsAboutTermsPrivacy
Search
Star
Setup for Free
Drizzle TeamDT
Drizzle Team•14mo ago
tcurdt

utility function for COALESCE

I have a CTE and I want an array to coalesce to [] and the count to coalesce to 0.

export function aggregateAsArray<Column extends AnyColumn>(column: Column) {
  return sql<
    GetColumnData<Column, 'raw'>[]
    >`coalesce(array_agg(distinct ${sql`${column}`}) filter (where ${column} is not null), ARRAY[]::text[])`;
}
export function aggregateAsArray<Column extends AnyColumn>(column: Column) {
  return sql<
    GetColumnData<Column, 'raw'>[]
    >`coalesce(array_agg(distinct ${sql`${column}`}) filter (where ${column} is not null), ARRAY[]::text[])`;
}


  const tagData = db.$with('library_tag_data').as(
    db
      .select({
        fooId: tableSurveysTagsLibrary.fooId,
        tags: aggregateAsArray(tableSurveysTagsLibrary.tag).as('tags'),
        tagCount: count(tableSurveysTagsLibrary.tag).as('tagCount')
      })
      .from(tableSurveysTagsLibrary)
      .groupBy(tableSurveysTagsLibrary.fooId)
  );
  const tagData = db.$with('library_tag_data').as(
    db
      .select({
        fooId: tableSurveysTagsLibrary.fooId,
        tags: aggregateAsArray(tableSurveysTagsLibrary.tag).as('tags'),
        tagCount: count(tableSurveysTagsLibrary.tag).as('tagCount')
      })
      .from(tableSurveysTagsLibrary)
      .groupBy(tableSurveysTagsLibrary.fooId)
  );


This feels too hard. What am I am missing?
Drizzle TeamJoin
The official Discord for all Drizzle related projects, such as Drizzle ORM, Drizzle Kit, Drizzle Studio and more!
11,879Members
Resources

Similar Threads

Was this page helpful?
Recent Announcements

Similar Threads

coalesce
Drizzle TeamDTDrizzle Team / help
2y ago
COALESCE to json array not working in sql function
Drizzle TeamDTDrizzle Team / help
13mo ago
Use COALESCE in index
Drizzle TeamDTDrizzle Team / help
2y ago
Optional filter param, coalesce to true?
Drizzle TeamDTDrizzle Team / help
3y ago