我是SQL新手,如果你有空闲时间,我想知道是否有人可以帮我复制SQL中的Excel Vlookup
函数吗?
从某些研究中,我怀疑它是我需要的join
函数之一,但是,我不想只选择两个表中包含的数据 - 我只是想在1个表中查找另一个表中的值。
如果数据包含在查找表中,则返回值,如果不包含,则返回NULL
。
我在下面给出了几个示例表来帮助说明我的问题。
请注意产品' C'和' D'表2中没有,但它们仍然在结果表中但具有NULL值。
此外,我有大量独特的产品,所以我不是在寻找包含硬编码的答案,例如; CASE WHEN [Product] = 'A' THEN...
的 TABLE1
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
答案 0 :(得分:6)
看起来你需要一个外连接,我将在我的例子中使用左边的连接:
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
答案 1 :(得分:0)
这是Lennart答案的更新版本,非常有效。
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不会在左侧表中添加任何行。
我什至添加了第三个表格。