名前の付いたテーブルがcourse
あり、2 つの列topic
とstatus
..
テーブルには 3 つの行があります。
('Computer','A')
('Science','I')
('History','A')
Active
表示したいテーブルの値を表示するときA
..Inactive
どうI
すればそれを行うことができますか...ここで私を助けてください.
名前の付いたテーブルがcourse
あり、2 つの列topic
とstatus
..
テーブルには 3 つの行があります。
('Computer','A')
('Science','I')
('History','A')
Active
表示したいテーブルの値を表示するときA
..Inactive
どうI
すればそれを行うことができますか...ここで私を助けてください.
他の答えはすべて、クエリの正しいアプローチを指摘しています。この答えは、これをテーブルに直接「焼き付ける」方法を説明することです。つまり、'A'
と'I'
をフィールドに格納できますが、 と を取得'Active'
できます'Inactive'
。
このために、テーブルの列の名前を「_status」に変更します。
最初の方法は、ビューを使用することです。
create view vw_table as
select <other columns>,
(case when _status = 'A' then 'Active'
when _status = 'I' then 'Inactive'
end) as status
from t;
次に、アプリケーション コードは常にビューを使用し、ステータスが必要なものであることが保証されます。SQL Server では、テーブル定義に計算列を追加することもできます。
alter table
add column status as (case when _status = 'A' then 'Active'
when _status = 'I' then 'Inactive'
end);
ビューまたは計算列を使用する利点は、つづりと定義が常に同じであることです。
最後に、そのような文字列を参照テーブルに変換したいことがよくあります。その場合、実際statusID
には元のテーブルにあり、status
テーブルには実際の定義があります。明確な定義を持つバイナリ値の場合、これはやり過ぎかもしれません。一方、SQL を学習している場合は、参照テーブルの作成 (およびデータ構造のさらなる正規化) について学習する良い機会になるかもしれません。
SELECT topic,
CASE status
WHEN 'A' THEN 'Active'
WHEN 'I' THEN 'Inactive'
END
FROM course
WHERE condition;
一般的なcaseステートメント構文用。
SELECT Topic,
CASE Status
WHEN 'A' THEN 'Active'
WHEN 'I' THEN 'Inactive'
-- ELSE '' -- only if you need it
END AS [Status]
FROM course