我有这样的要求:
表2
车辆ID。车辆名称 燃油颜色
Tesla El Red
Benz El Blue
Tata Ga White
Ins Target Table 3
Sel
VehID ,
case when
Fuel in ('El', 'Ga')
and Color in ('Red', 'Blue' , 'White', 'Black')
then 'Y'
else 'N' as BuyInD
From Table2 ;
我需要用元/查找表替换“硬编码”:
用参考表替换硬代码:
车名 | 燃料类型 | 颜色 |
---|---|---|
特斯拉 | 埃尔 | 红色 |
奔驰 | 嘎 | 蓝色 |
塔塔 | 嘎 | 白色 |
奥迪 | 埃尔 | 黑色 |
In Target Table
Sel
VehID ,
case when
Fuel = b.FuelType
and Color = b.Color
then 'Y'
else 'N' as BuyInD
From Table2 a,
Table1 b;
上面的连接不正确,因为匹配仅针对 1 个值,而不是列中的所有值。
您可以在这里使用左反连接方法:
SELECT
t2.VehID,
CASE WHEN t1.CarName IS NOT NULL THEN 'Y' ELSE 'N' END AS BuyInD
FROM Table2 t2
LEFT JOIN Table1 t1
ON t1.CarName = t2.VehName AND
t1.FuelType = t2.Fuel AND
t1.Color = t2.Color;