The below works fine to list all users who have at least 1 expired subscription. The problem is it is strictly checking for expired and a user may not be expired, but cancelled or upgraded for example.
( ( SELECT COUNT(*) FROM `#__cbsubs_subscriptions` AS sub WHERE sub.`user_id` = u.`id` AND sub.`status` = 'X' ) >= 1 )
It's typically more reliable to just check for not active, which is done with the below.
( ( SELECT COUNT(*) FROM `#__cbsubs_subscriptions` AS sub WHERE sub.`user_id` = u.`id` AND sub.`status` != 'A' ) >= 1 )
You can better review exactly what status a users subscription has in the _cbsubs_subscriptions database table as that's what the `status` in the query is checking against. Once that check is working add the field check.
Additionally you could just have your text field a searchable field on your userlist then use the advanced filter to just make sure the userlist can only display expired users. This way your text field filter isn't hardcoded into your userlist.