以下のクエリでは、括弧内の最初の 2 つのクエリに注意してください。2 つの繰り返しクエリを追加しました。これは良い方法ではないと確信しています。値が必要な場合はいつでもこのクエリを繰り返す必要があります。
SQL Server は、SELECT キーワード内に DECLARE を書き込まないように例外をスローしています。リファクタリングするために何ができるか、何が欠けていますか?
SELECT A.StudentId,
(
CASE WHEN (SELECT B.OverwrittenScore
FROM dbo.OverwrittenScores AS B
WHERE B.StudentId = A.StudentId
AND B.AssignmentId = @assignmentId
) IS NOT NULL
THEN (
SELECT B.OverwrittenScore
FROM dbo.OverwrittenScores AS B
WHERE B.StudentId = A.StudentId
AND B.AssignmentId = @assignmentId)
ELSE (-- ANOTHER QUERY, BY THE MOMENT: SELECT 0 )
END
) AS FinalScore
FROM dbo.Students AS A