userID、state、country の 3 つのフィールドを持つテーブルがあり、国が Great Brittin、Canada、または US であるすべてのレコードを検索するクエリを実行しようとしています。国が US の場合は、California、Utah、およびアリゾナ。
私はこれがうまくいくかもしれないと思ったが、そうではない
select *
from myTable
where county in ('GB','CA','US')
and case when country = 'US' then state in ('CA','UT','CA') end
SQL の専門家にアイデアはありますか?
**編集** これを単純化しすぎたと思います。国と州は変数として渡されるため、「米国」の国があるかどうかはわかりませんが、ある場合は州のリストがあります
declare @country varchar(500)
, @state varchar(500)
, @sqlStr varchar(4000)
select @sqlStr = 'select * from Addresses
WHERE country IN ('+@country+')
OR (country = ''US'' AND stateCode IN ('+@state+'))'
exec (@sqlStr)
これが難しくなります。