私はSQLを初めて使用しますが、時間があれば、SQLでExcel Vlookup
関数を複製するのを手伝ってくれる人がいないかと思いました。
いくつかの調査から、これは私が必要とするjoin
関数の1つであると思われますが、両方のテーブルに含まれるデータを選択するだけではなく、値を検索するだけです。別のテーブルに対して1つのテーブル。
データがルックアップテーブルに含まれている場合は値を返し、含まれていない場合はNULL
を返します。
私の質問を説明するために、以下にいくつかの例の表を示しました。
製品「C」と「D」は表2にはありませんが、結果テーブルにはありますが、値はNULLであることに注意してください。
また、私はユニークな製品をたくさん持っているので、たとえばハードコーディングを含む答えを探していません。 CASE WHEN [Product] = 'A' THEN...
表1
Product Quantity
-------------------
A 10
B 41
D 2
C 5
B 16
A 19
C 17
A 21
表2
Product Cost
-----------------
A £31.45
B £97.23
結果表
Product Quantity Cost
-----------------------------
A 10 £31.45
B 41 £97.23
D 2 NULL
C 5 NULL
B 16 £97.23
A 19 £31.45
C 17 NULL
A 21 £31.45
外部結合が必要なように見えます。私の例では左側の結合を使用します。
select t1.Product, t1.Quantity, t2.Cost
from table1 as t1
left outer join table2 as t2
on t1.Product = t2.Product
外側のキーワードを省略することもできます。
select t1.Product, t1.Quantity, t2.Cost
from table1 as t1
left join table2 as t2
on t1.Product = t2.Product
これがレナートの答えの更新版で、本当にうまくいきます。
select *
from table1 as t1
left outer join table2 as t2
on t1.Product = t2.Product
and t2.Product <> ''
left outer join table3 as t3
on t1.Product = t3.Product2
and t3.Product2 <> ''
重要なのは、結合テーブルの列が空白の行を除外する必要があるということです。そうしないと、table1よりも多くの行が返されます。真のvlookupは、左側のテーブルに行を追加しません。
効果のために3番目のテーブルも追加しました。