我正在尝试创建一组要写入文件的数据,它本质上是一个由许多不同表中的各种字段组成的报告,有些列需要对它们进行一些处理,有些可以刚刚被选中。
不同的用户可能希望对某些列执行不同的处理,并且在未来,我可能需要为计算列添加额外的函数。
我正在考虑最简洁/最灵活的方法来存储和使用这些计算列可能需要的所有不同功能,我脑子里有两个想法,但我希望可能有更多我缺少明显的解决方案。
举一个简单但有点奇怪的例子,一个 Staff 表:
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 的忠实粉丝,尽管在这种情况下,我认为这可能是获得我想要的结果的最佳方式?
任何答复表示赞赏,谢谢,克里斯