ファイルに書き出す一連のデータを作成しようとしています。これは基本的に、さまざまなテーブルのさまざまなフィールドで構成されたレポートです。いくつかの列では処理を行う必要があり、いくつかの列では選ばれるだけ。
異なるユーザーは、特定の列に対して異なる処理を実行することを希望する可能性が高く、将来的には、計算列用の関数を追加する必要があるでしょう。
これらの計算列に必要になる可能性が高いさまざまな関数をすべて格納して使用するための、最もクリーンで柔軟なアプローチを検討しています。私が見逃している明らかな解決策。
単純で少し変わった例として、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
ユーザー定義関数では、関数内の case ステートメントで optionID を使用して、実行する処理を決定します。
または、他の関数のルックアップ テーブルを使用して、データが返される方法をカスタマイズ可能にしたいと思います。
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 の大ファンではありませんが、この場合、求めている結果を得るための最良の方法ではないでしょうか?
返信ありがとうございます、ありがとう、クリス