Teradata SQL 问题 - 如何使用带有 IN 和内联接的 CASE 语句来匹配一对多列值?

问题描述 投票:0回答:1

我有这样的要求:

表2

车辆ID。车辆名称 燃油颜色

  1. Tesla     El        Red
    
  2. Benz      El        Blue
    
  3. 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 ;

我需要用元/查找表替换“硬编码”:

用参考表替换硬代码:

查找参考/表:表1

车名 燃料类型 颜色
特斯拉 埃尔 红色
奔驰 蓝色
塔塔 白色
奥迪 埃尔 黑色
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 个值,而不是列中的所有值。

join case teradatasql
1个回答
0
投票

您可以在这里使用左反连接方法:

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;
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.