13

T-SQL では、select の一部として演算を実行できます。たとえば、Decimal という名前の列を持つテーブル Math があるとします。次のクエリを実行できます。

SELECT 100*Decimal FROM Math

列が A になるたびに B を返し、列が F になるたびに { A=>B, F=>Z} などのマッピングを作成する SELECT でロジックを実行することも可能かどうか疑問に思います、Z を返します。

私はSQLの経験があまりないので、これが初心者の質問である場合は申し訳ありません。

4

3 に答える 3

17

CASE式を使用したいと思います。

SELECT 
  CASE column1 
    when 'A' THEN 'B' 
    when 'F' THEN 'Z' 
  END 
FROM Tbl

また、2つの異なる構文があることに注意してください。最も適切なものを選択してください。

于 2012-04-10T21:52:22.217 に答える
7

2 つの列を持つテーブル変数を作成できます。1 つはマップされる対象用で、もう 1 つはマップされる対象用です。次に、再マップする列のそのテーブル変数に結合するだけです。

CASE ステートメントは比較の回数が少ない場合にはうまく機能しますが、多くの再マッピングを行う場合は、テーブル変数の方が適している可能性があります。

このようなもの...

DECLARE @Mappings TABLE
(
  MapFrom VARCHAR(50),
  MapTo VARCHAR(50)
)

insert into @Mappings values 
('A', 'B'), 
('F', 'Z'), 
('other', 'mappings');


select m.MapTo
from yourTable t
inner join @Mappings m on m.MapFrom = t.columnName
于 2012-04-11T03:25:19.390 に答える
3
SELECT CASE WHEN YourColumn = 'A' THEN 'B'
            WHEN YourColumn = 'F' THEN 'Z'
            ELSE YourColumn
       END AS MappedColumn
    FROM YourTable
于 2012-04-10T21:52:50.843 に答える