Я думаю, что это самый короткий код, который вы найдете, и требуется только одно преобразование:
SELECT RIGHT(CONVERT(CHAR(10), Op_Date, 103), 7);
Отображение на ваш запрос:
SELECT Op_Date, RIGHT(CONVERT(CHAR(10), Op_Date, 103), 7)
FROM dbo.Fcdata;
И соединение будет:
SELECT f.*, o.*
FROM dbo.Fcdata AS f
INNER JOIN dbo.OtherTable AS o
ON RIGHT(CONVERT(CHAR(10), f.Op_Date, 103), 7) = o.column_name;
Только не ожидайте, что производительность будет большой, если таблица большая, потому что преобразование заставит SQL Server сканировать каждую строку.
Также, пожалуйста, не используйте сокращения, такие как гггг и мм. Вы знаете, что y и yyyy разные? И что теперь существует ПЯТЬ различных сокращений, начинающихся с m (m, mi, ms, mm, mcs)? Поясните это. Если вы имеете в виду ГОД, скажите ГОД. Тогда это всем понятно.