Bảng của bạn có vẻ như nó không ở dạng bình thường đầu tiên.
Thay vì ba cột cho Period0Id thành Period2Id, bạn có thể có một cột cho PeriodIndex với các giá trị (0,1,2) và một cột duy nhất cho PeriodId và sau đó nó sẽ chỉ là một WHERE PeriodIndex = @Check
Bạn không thể chọn một cột bằng cách sử dụng nội suy chuỗi với một biến khi bạn đang cố gắng. Bạn có thể sử dụng SQL động để tạo chuỗi SQL động. Hoặc chỉ cần mã hóa cứng các tùy chọn nếu tất cả chúng đều có cùng một loại dữ liệu.
Select ID,
Name,
StatusId = CASE @Check WHEN 0 THEN Period0Id
WHEN 1 THEN Period1Id
WHEN 2 THEN Period2Id
END
From mytable