Я работаю с таблицей, в которой есть несколько столбцов, которые могут быть отсортированы в зависимости от настроек пользователя.Я пытаюсь найти способ избежать динамического SQL и сохранить строку сортировки в таблице предпочтений.
Пример данных, с которыми я работаю:
User | VIP | Date | Priority | Location
---------------------------------------------------
Jim | 1 | 1/1/2019 | 0 | 105
Joe | 0 | 2/1/2019 | 0 | 104
Jack | 1 | 1/5/2019 | 1 | 105
John | 0 | 2/6/2019 | 1 | 106
Jane | 0 | 4/1/2019 | 1 | 105
Jake | 1 | 7/1/2019 | 0 | 105
Таблица сортировки будет выглядеть примерно так:
Column | SortOrder | Location
------------------------------------
VIP | 2 | 105
Date | 1 | 105
Priority | -1 | 105
VIP | 1 | 104
Date | 2 | 104
Priority | 3 | 104
VIP | 1 | 106
Date | -1 | 106
Priority | 2 | 106
Мой запрос будет использовать расположение какпредложение where, поэтому я буду возвращать значения только для определенного местоположения, но я хотел бы отсортировать данные для этого местоположения на основе значений, установленных в таблице сортировки.
-1 будет неактивной сортировкой,так что если бы место было 105, я бы хотел заказать по дате, а затем по VIP.Если 104, VIP, затем Дата, затем Приоритет и если 106 VIP, то рассматривается Приоритет без Даты.
Я думал, что мог бы, возможно, сделать какую-то математическую вещь, но мне трудно придуматьалгоритм.
Я пытаюсь избежать жесткого кодирования Date ASC, VIP ASC в таблицу и извлечения и применения его с помощью динамического SQL (хотя у меня это работает, но я надеюсь на лучшее, неДинамическое решение).
У кого-нибудь есть предложения?