2016-04-14 9 views
0

where句の値を型文字列として使用できますか?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 

「はい」の場合、このようなクエリを実行するにはどうすればよいですか?

+1

追加したいん'どこa.testb = 'somevalue''?その場合は、自由に追加して確認してください。 –

+0

たとえば、「場所」を使用したい[月曜日に有効] = 1 ' – Kaja

答えて

0

基準はWHERE句に属します。あなたが単純にこれをしたいようだ:

WHERE (datepart(dw, b.Date) = 1 And [Valid at Monday] = 1) 
    OR (datepart(dw, b.Date) = 2 And [Valid at Tuesday] = 1) 
    OR ... 

か、場合に[Valid at ...]列がoutherに属しているが、テーブルCustomerShopAndArrivalTimeに入社、その後、当然の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 ... 
) 
関連する問題