SELECT CAST(member.squad_id AS TEXT) AS squadId, CAST(member.user_profile_id AS TEXT) AS userProfileId, CAST(profile.prisoner_id AS TEXT) AS gamePlayerId, user.id AS steamId, COALESCE(profile.name, user.name, '') AS displayName, CAST(member.rank AS TEXT) AS rank, CASE WHEN member.rank = 4 THEN 1 ELSE 0 END AS isLeader FROM squad_member member JOIN user_profile profile ON profile.id = member.user_profile_id LEFT JOIN user ON user.id = profile.user_id WHERE (:squadId IS NULL OR CAST(member.squad_id AS TEXT) = :squadId) AND (:userProfileId IS NULL OR CAST(member.user_profile_id AS TEXT) = :userProfileId) ORDER BY member.squad_id, member.rank DESC, profile.name LIMIT COALESCE(:limit, 500)