使用case配置单元查询查找id是否匹配并替换

xqkwcwgp  于 2021-06-25  发布在  Hive
关注(0)|答案(1)|浏览(372)

我有一个名为“scan”customer transactions的表,其中每个不同的事务都会出现一个单独的\u id,并包含类似scan \u id的列。我还有一个名为ids的表,其中包含从scan表中随机抽取的单个\u id
我想把ids和scan连接起来,如果ids和scan\ id与某些值匹配的话,我会得到一个ids和scan\ id的记录。
假设数据如下
扫描表

Ids          scan_id
----        ------
1           100
1           111
1           1000
2           100
2           111
3           124
4           1000
4           111
Ids table

id
1
2
3
4
5

我想要下面的输出,即如果扫描id匹配100或1000

Id        MT
------    ------
1          1
2          1
3          0
4          1

我执行下面的查询并得到错误

select MT, d.individual_id
from  
(
  select 
    CASE 
      when scan_id in (90069421,53971306,90068594,136739913,195308160) then 1 
      ELSE 0
    END as MT
  from scan cs join ids r
 on cs.individual_id = r.individual_id
where 
        base_div_nbr =1 
        and 
        country_code ='US' 
        and
         retail_channel_code=1 
         and visit_date between '2019-01-01' and '2019-12-31'
) as d
group by individual_id;

我将感谢任何建议或帮助关于这个Hive查询。如果有一个有效的方法来完成这项工作。让我知道。

koaltpgm

koaltpgm1#

使用 group by :

select s.individual_id,
      max(case when s.scan_id in (100, 1000) then 1 else 0 end) as mt
from scan s 
group by s.individual_id;

这个 ids 此查询似乎不需要表。

相关问题