1

'Beasties'というテーブルがあり、Animalなどの列のデータ値を条件付きで置換してから、その列でフィルター処理したい場合は、これを実行しようとします...

SELECT 
   (CASE Animal 
    WHEN 'Horse' THEN 'Zebra' 
    ELSE Animal
    END) AS Species
FROM Beasties 
WHERE Species='Zebra'

ただし、T-SQLではWHERE句を使用できません。これにより、Speciesの代わりにAnimalのみを使用できるようになります。名前が変更された(したがって編集された)列の値をフィルタリングするにはどうすればよいですか?

これについて助けてくれてありがとう。

4

3 に答える 3

5

これを行う:

SELECT 
   (CASE Animal 
    WHEN 'Horse' THEN 'Zebra' 
    ELSE Animal
    END) AS Species
FROM Beasties 
WHERE 'Zebra'=(CASE Animal WHEN 'Horse' THEN 'Zebra'  ELSE Animal END)
于 2013-03-19T12:44:39.720 に答える
2

サブクエリに貼り付けることができます。

SELECT *
FROM (
    SELECT 
       (CASE Animal 
        WHEN 'Horse' THEN 'Zebra' 
        ELSE Animal
        END) AS Species
    FROM Beasties
)
WHERE Species='Zebra'
于 2013-03-19T12:50:14.780 に答える
1

それを行うための特にエレガントな方法があるかどうかはわかりませんが、ない場合はこれでうまくいくはずです。

WHERE Animal IN ('Horse', 'Zebra')
于 2013-03-19T12:44:38.673 に答える