Sql server 我们可以在sql中将Case设置为特定列吗

Sql server 我们可以在sql中将Case设置为特定列吗,sql-server,Sql Server,这部分给出了语法错误 当@day=1时,则Day1=1 declare @Day int declare @Flag nvarchar(2) set @Flag='L' set @Day=1 select * from [IIFL_Schedule].dbo.IIFL_Corporate where Ticker =@Flag and( case when @day=1 then Day1=1

这部分给出了语法错误 当@day=1时,则Day1=1

declare @Day int
   declare @Flag nvarchar(2)
   set @Flag='L'
   set @Day=1
      select * from [IIFL_Schedule].dbo.IIFL_Corporate
      where Ticker =@Flag and(
            case when  @day=1 then Day1=1 
                when @day=2 then Day2=1 
                when @day=3 then Day3=1
           end )
试试看

尝试下面的查询

declare @Day int
declare @Flag nvarchar(2)
set @Flag='L'
set @Day=1

select *
from [IIFL_Schedule].dbo.IIFL_Corporate
where Ticker=@Flag
  and (
        case @day -- !!!
          when 1 then Day1
          when 2 then Day2
          when 3 then Day3
        end = 1 -- !!!
      )
declare @Day int
declare @Flag nvarchar(2)
set @Flag='L'
set @Day=1

select *
from [IIFL_Schedule].dbo.IIFL_Corporate
where Ticker=@Flag
  and (
        case
          when @day=1 then Day1
          when @day=2 then Day2
          when @day=3 then Day3
        end = 1 -- !!!
      )
declare @Day int
declare @Flag nvarchar(2)
set @Flag='L'
set @Day=1

select *
from [IIFL_Schedule].dbo.IIFL_Corporate
where Ticker=@Flag
  and (
        case @day -- !!!
          when 1 then Day1
          when 2 then Day2
          when 3 then Day3
        end = 1 -- !!!
      )
declare @Day int
   declare @Flag nvarchar(2)
   set @Flag='L'
   set @Day=2
      select * from [IIFL_Schedule].dbo.IIFL_Corporate
      where Ticker =@Flag and 1 =  

      (
            case when  @day=1 then Day1
                when @day=2 then Day2
                when @day=3 then Day3
           end )