Я пытаюсь создать набор данных, которые я собираюсь записать в файл, это по существу отчет, состоящий из различных полей из нескольких разных таблиц, для некоторых столбцов чтобы на них была обработана некоторая обработка, некоторые могут быть выбраны.SQL - Вычисление столбцов с использованием динамических функций
Различные пользователи, скорее всего, захотят выполнить разные обработки в определенных столбцах, и в будущем мне, вероятно, придется добавить дополнительные функции для вычисленных столбцов.
Я рассматриваю самый чистый/самый гибкий подход к хранению и использованию всех различных функций, которые, вероятно, понадобятся для этих вычисленных столбцов, у меня есть две идеи в моей голове, но я надеюсь, что возможно быть гораздо более очевидным решением, которого я пропускаю.
Для простого, немного нечетным, например, штатный стол:
Employee | DOB | VacationDays
Frank | 01/01/1970 | 25
Mike | 03/03/1975 | 24
Dave | 05/02/1980 | 30
Я думаю, что я либо в конечном итоге с запросом, как
SELECT NameFunction(Employee, optionID),
DOBFunction(DOB, optionID),
VacationFunction(VacationDays, optionID),
from Employee
С определенных пользователем функций, где optionID будет использоваться в описании case внутри функций, чтобы решить, какую обработку выполнить.
Или я бы хотел сделать так, как данные возвращаемые настраивается с помощью таблицы поиска других функций:
ID | Name | Description
1 | ShortName | Obtains 3 letter abbreviation of employee name
2 | LongDOB | Returns DOB in format ~ 1st January 1970
3 | TimeStampDOB | Returns Timestamp for DOB
4 | VacationSeconds | Returns Seconds of vaction time
5 | VacationBusinessHours | Returns number of business hours of vacation
который кажется аккуратнее, но я не знаю, как я бы сформулировать запрос , предположительно используя динамический SQL? Есть ли разумная альтернатива?
Функции будут использоваться на нескольких тысячах строк.
Ближайший ответ, который я нашел, было в этой теме: Call dynamic function name in SQL
Я не большой поклонник динамического SQL, хотя в данном случае я думаю, что это может быть лучшим способом, чтобы получить результат я После?
Все ответы оценили, Спасибо, Крис
Спасибо за пример, я собираюсь создать несколько тестовых таблиц/функций, чтобы поэкспериментировать с моими результатами и изучить их. Спасибо! (если бы у меня был представитель). – Chris