1. ホーム
  2. sql

[解決済み] SQLのwhere句のスイッチ/ケース

2022-03-01 01:06:54

質問

いろいろと検索してみたのですが、参考になるようなものが見つかりませんでした。

SQLでやろうとしてるんだけど。

declare @locationType varchar(50);
declare @locationID int;

SELECT column1, column2
FROM viewWhatever
WHERE
CASE @locationType
    WHEN 'location' THEN account_location = @locationID
    WHEN 'area' THEN xxx_location_area = @locationID
    WHEN 'division' THEN xxx_location_division = @locationID

それぞれの最後に'= @locationID'を付ける必要がないことは分かっているのですが、構文がどうしても正しくならないのです。SQLは最初のWHEN行にある私の'='について文句を言い続けるのです...。

どうすればいいのでしょうか?

どのように解決するのですか?

declare @locationType varchar(50);
declare @locationID int;

SELECT column1, column2
FROM viewWhatever
WHERE
@locationID = 
  CASE @locationType
      WHEN 'location' THEN account_location
      WHEN 'area' THEN xxx_location_area 
      WHEN 'division' THEN xxx_location_division 
  END