2012-01-11 9 views
0

私は、別のフィールドのデータに基づいてSQLクエリでフィールドを作成したいと思います。たとえば、SQLレコードの他のフィールドに基づいてフィールドを作成

「状態」列は、ルックアップテーブルまたはif/elseステートメントから取得できます。私はこれを行う方法がわからないので、私はどんな助けにも感謝します。

+0

あなたのスキーマは何ですか? –

答えて

1

これは1つの "解決策"ですが、さらに多くがあります。

FirstName、LastName、Hometown(私はあなたがそのテーブルを既に持っているかもしれないと思います)とCityとStateを持つ "CityToState"というルックアップテーブルからなる "Person"というテーブルを作成できます。

NULLがあれば状態のために返されると、適切なデータを持つルックアップテーブルを記入(それは非常に大きくなるだろう、私は確信している)、あなたに正しいデータを与える必要がありますクエリ

select FirstName, LastName, Hometown, State 
    from Person left join CityToState on Hometown=City; 

を発行ルックアップテーブルに市が存在しません。

基本的には、Personからのすべてのデータを取得して、HomeToownがCityと同じCityToStateの行で行ごとに参加することです。 「左」部分は、CityToStateに一致する行がなくても、左の表(Person)から行を戻す必要があることを意味します。

+0

あなたの助けをありがとう - 美しく働いた! –

0

あなたが使用しているデータベースの質問computed column(質問には記載されていません)を参照してください。ここにSQL ServerのComputed Columnsに関する情報があります。

ただし、別のデザインを使用する必要があります。あなたが故郷に基づいて状態を見ているならば、外来キーで十分であり、データを複製する必要はありません。

+0

この質問は、テーブルの永続的なものではなく、「自分のSQLクエリでフィールドを作成する」方法について質問します。私は彼らが参加する必要があると思う。 –

+0

@マーティン・スミス、あなたの推測は私のものと同じくらい良いです。 –