To decide which columns to sort on, you need to use either a CASE
condition in your order by (potentially multiple), use a UNION with the condition and sort on column index, or use an inner-select to assign the values to a virtual column and then sort on that.
Sorting by CASE
:
SELECT ...
FROM ...
ORDER BY CASE WHEN Premium = 'T' THEN FOILBUY ELSE NORMALBUY END,
CASE WHEN Premium = 'T' THEN FOILSELL ELSE NORMALSELL END
Sorting using UNION
:
SELECT FOILBUY, FOILSELL, ...
FROM ...
WHERE Premium = 'T'
UNION ALL
SELECT NORMALBUY, NORMALSELL, ...
WHERE Premium = 'F'
ORDER BY 1, 2
Sorting using inner select
SELECT BUY, SELL, ...
FROM (
SELECT CASE WHEN Premium = 'T' THEN FOILBUY ELSE NORMALBUY END AS BUY,
CASE WHEN Premium = 'T' THEN FOILSELL ELSE NORMALSELL END AS SELL,
...
FROM ...
)
ORDER BY BUY, SELL
But having a discriminator column which indicates which columns need to be used may indicate a database normalisation problem. You might want to look at your database design if you can't eliminate this.