結果の数に基づいて、2 つの選択ステートメントから選択しようとしています。次の case ステートメント以外でテストすると、各ステートメントは有効なデータを返します。
SELECT CASE
WHEN Count(base.id) > 0 THEN base.id
ELSE (SELECT id
FROM tablea
WHERE pid = @val)
END
FROM (SELECT id
FROM tablea
WHERE id = @val) AS base
base.Id >0 の場合は正しく返されます。それ以外の場合は Null で、代わりにテーブルから 7 行が必要です。