我试图创建一组数据,我将写出一个文件,它本质上是一个由多个不同表中的各个字段组成的报表,某些列需要要对它们进行一些处理,可以选择一些。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