Sql 在WHERE子句中将字符串值用作布尔值

Sql 在WHERE子句中将字符串值用作布尔值,sql,sql-server,Sql,Sql Server,是否可以在where子句中将值用作类型字符串。大概是这样的: select * from ( select datepart(dw,b.Date) as Tag,b.[Customer No_],b.Date,b.[POS Holiday],b.Nonworking, case when datepart(dw,b.Date)=1 then (select '[Valid at Monday]=1') when datepart(dw,b.Date)=2 then (selec

是否可以在where子句中将值用作类型字符串。大概是这样的:

 select * from 
 (
 select datepart(dw,b.Date) as Tag,b.[Customer No_],b.Date,b.[POS Holiday],b.Nonworking,
 case
  when datepart(dw,b.Date)=1 then (select '[Valid at Monday]=1')
  when datepart(dw,b.Date)=2 then (select '[Valid at Tuesday]=1')
  when datepart(dw,b.Date)=3 then (select '[Valid at Wednesday]=1')
  when datepart(dw,b.Date)=4 then (select '[Valid at Thursday]=1')
  when datepart(dw,b.Date)=5 then (select '[Valid at Friday]=1')
  when datepart(dw,b.Date)=6 then (select '[Valid at Saturday]=1')
  when datepart(dw,b.Date)=7 then (select '[Valid at Sunday]=1')
 end as  TestB 
 from [CustomerBPCal] b
 ) as a 
 left join [CustomerShopAndArrivalTime] as c on c.[Customer No_]=a.[Customer No_]  where a.TestB 

如果是,如何更改代码以运行此类查询?

条件属于
WHERE
子句。似乎您只是想这样做:

WHERE (datepart(dw, b.Date) = 1 And [Valid at Monday] = 1)
   OR (datepart(dw, b.Date) = 2 And [Valid at Tuesday] = 1)
   OR ...
或者,如果
[在…]有效
列属于外部联接表
CustomerShopArrivalTime
,则在
ON
子句中:

ON c.[Customer No_] = a.[Customer No_]  
AND
(   (datepart(dw, b.Date) = 1 And c.[Valid at Monday] = 1)
 OR (datepart(dw, b.Date) = 2 And c.[Valid at Tuesday] = 1)
 OR ...
)

是否要添加
,其中a.testb='somevalue'
?如果是,请随意添加和检查。例如,我想使用“where'[周一有效]=1”