Sort on text data runs from left to right, so BA3201/04 comes before BA3093/05 (when order by is DESC) because BA32 is higher than BA30.
To force the desired order you will have to do as Drakla sez and sort by prefix, then year, then ref.
If need be you can select only part of the ref field and sort by that
"SELECT ref_prefix,ref,year, SUBSTRING(ref, 3, 4) AS s FROM table ORDER by ref_prefix DESC,year DESC, s DESC";
That will extract just the digits from your ref and allow sorting on them.