テーブル内の一部のデータを選択的に上書きしてから、上書きされたデータを並べ替えたりフィルタリングしたりするSQLを作成する必要があります。これは非常に単純化された例です...
私はPETと呼ばれるペットの名前でいっぱいのテーブルを持っています
PET_NAME PET_SPECIES PET_PK
---------- ----------- -----------
Barney Dog {PETGUID1}
Fergus Cat {PETGUID2}
Meatball Hamster {PETGUID3}
私はLIFEと呼ばれる彼らのライフステータスを保持する別のテーブルを持っています
LIF_PK LIF_STATUS LIF_PET_FK
---------- ------------ ------------
{LIFGUID1} Alive {PETGUID1}
{LIFGUID2} Alive {PETGUID2}
{LIFGUID3} Dead {PETGUID3}
ペットとその生活状況を報告したいと思います。
SELECT PET_NAME,
PET_SPECIES,
LIF_STATUS
FROM PET
INNER JOIN LIFE ON LIF_PET_PK=PET_PK
ペットが死んでいるところでは、名前を報告したくなく、代わりに「DEADPET」を使用します。
思い出が多すぎます。そして、ペットの名前で注文したいと思います。
プロキシ変数を作成し、ペットが生きている場合にのみ、caseステートメントでペット名に設定できると思いました。
DECLARE @petName nvarchar(18)
SELECT @petName=(CASE LIF_STATUS='Alive' THEN PET_NAME ELSE 'DEADPET' END),
PET_SPECIES,
LIF_STATUS
FROM PET
INNER JOIN LIFE ON LIF_PET_PK=PET_PK
ORDER BY @petName
しかし、それはできません。TSQLでは許可されません。
もちろん、実際にはこれはペットとは関係がなく、すべて金融ローン{Meatball Lives!}と関係がありますが、原則は同じです。