0

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)

これが難しくなります。

4

3 に答える 3

2

最後の行を次のように置き換えます。

and (Country <> 'US' or state in ('ca', 'ut', 'az'))
于 2012-11-09T20:21:32.747 に答える
1

まず、FROM Tableクエリの一部が欠落しています。いずれにせよ、これはそれを行う必要があります:

SELECT *
FROM YourTable
WHERE Country IN ('GB','CA')
OR (country = 'US' AND [state] IN ('CA','UT','CA'))
于 2012-11-09T20:24:59.510 に答える
0

これのことですか

country in ('GB','CA')
or (country = 'US' and  state in ('CA','UT','CA') )
于 2012-11-09T20:22:12.443 に答える