ストップライト ステータス
1 - Red
2 - Yellow
3 - Green
これは決定論的な関数なので...
CREATE FUNCTION dbo.udf_StoplightStatusRed()
RETURNS TINYINT
WITH SCHEMABINDING
AS
RETURN CAST(1 as TINYINT)
END
やっても安全でしょうか...
SELECT
[Status] = CASE StoplightStatusID WHEN dbo.udf_StoplightStatusRed() THEN 1 ELSE 0 END
FROM dbo.StoplightAudit
WHERE StopLightStatusID = dbo.udf_StoplightStatusRed()
クエリ自体はあまり意味がありません。これを行うと、関数が各行に対して評価されないことを確認したいだけです。
詳細情報を取得するには、他の多くのテーブルに参加する必要があります。最初に CTE のすべての監査 ID を取得してそれに参加する方がよいでしょうか、それともこれらの関数は決定論的であるため問題ではありませんか?