#!perl use strict; use DBI; use SQL::Abstract::More; my $sqla = SQL::Abstract::More->new(); my $case = q! CASE WHEN record.is_public = 'Yes' THEN 'public' WHEN EXISTS ( SELECT 1 FROM permissions WHERE permissions.rec_id = record.id AND user_id = ? ) THEN 'accessible' ELSE 'private' END as viewable!; my ($sql,undef) = $sqla->select( -columns => [$case,'record.id','record.display_name'], -from => 'record', -where => { 'record.id' => 1 } ); print $sql;