0

例として、次の(簡略化された)テーブル(NumericValueと呼ばれる)があるとします。

Age   Gender    Occupation      Location        Value
40    M         Accountant      Johannesburg    100
40    F         Accountant      Johannesburg    120
40    M         Engineer        NULL            110
40    F         Engineer        NULL            110

ここで、Employeesというテーブルがあるとします。

Employee Number  Age   Gender    Occupation      Location        
1000123          40    F         Engineer        Cape Town      
1000124          40    M         Accountant      Johannesburg

ここで、必要なのは、これら2人の従業員の「値」フィールドを選択することです。そして、エンジニアがNumericValueテーブルに「場所」を持つことは決してないので、単純な結合を行うことはできないとしましょう。代わりに、「NumericTable」を次のように再フォーマットします。

Table: "CategoryValue"
Category   Value
1          100
2          120
3          110
4          110

次のような「プロパティ」テーブルを使用します。

Table: "CategoryProperty"
Category   FieldName   FieldValue
1          Age         40
1          Gender      M
1          Occupation  Accountant
1          Location    Johannesburg
.
.
4          Age         40
4          Gender      F
4          Occupation  Engineer

(注:40歳の女性エンジニアを指すカテゴリ4の「場所」のエントリはありません)

特定の分類フィールドが重要なエントリしかないので、これは私には理にかなっています。しかし、これを解決して特定の従業員の[値]フィールドを抽出するにはどうすればよいですか?

ありがとう
カール

4

1 に答える 1

0

こんなことしてみませんか?

Select  e.EmployeeNumber,
        e.Age,
        e.Gender,
        e.Occupation,
        e.Location,
        nv.Value
From Employees e
Join NumericValue nv on e.Age = nv.Age
                        And e.Gender = nv.Gender
                        And e.Occupation = nv.Occupation
                        And e.Location = IsNull(nv.Location, e.Location)

NULL の場合、NumericValue Location を Employee Location の値に置き換えるだけです。

于 2010-12-14T17:27:58.907 に答える