case when 和 left join 连用的问题

ZQH1994 2017-07-13 04:38:48
问题描述:有两张表,都有user_id,一张是所有的用户表t1,另一张表示部分用户表t2,我想建立一张临时表
CREATE MULTISET TABLE 表
AS(
SEL T1.**
, t2.**
, case when
FROM T1
left join t2
on t1.user_id = t3.user_id
WHERE DEAL_DATE between cast('20170701' as date format 'YYYYMMDD') and cast('$TX_DATE' as date format 'YYYYMMDD')
)WITH DATA PRIMARY INDEX(USER_ID);
我在这个临时表进行casewhen 判断 实现 我在取这表的数据时 通过限制条件就可以选择取t1的用户 还是 t2的用户 这里的 case when 不知道怎么写。
...全文
7063 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Megan2008 2018-10-11
  • 打赏
  • 举报
回复

CREATE TABLE t1 (user_id1 int, username varchar(10),DEAL_DATE DATE )
CREATE TABLE t2 (user_id2 int, usercomments varchar(10))

INSERT INTO t1 values(1,'Lily', '2018-01-01')
INSERT INTO t1 values(2,'Lucy', '2018-01-01')
INSERT INTO t1 values(3,'Tom', '2018-01-01')

INSERT INTO t2 values(2,'t2')
INSERT INTO t2 values(3,'t2')


select t1.* , t2.* 
, CASE WHEN t2.user_id2 is null then 'the user is only in t1' ELSE 'the user is in both t1 and t2' end AS userCheck
from t1 left join t2 on t1.user_id1 = t2.user_id2
林间沐雨 2018-08-04
  • 打赏
  • 举报
回复
先进行数据处理,left join 里面的数据要么是交集,要么就是t1交集之外的数据,你只能区分这两部分的数据,使用case判断t2.user_id是否为空,进行区分,具体不太清楚你想要的结果
  • 打赏
  • 举报
回复
不先把数据处理了以后再用CASE WHEN呢?不知道说的对不对哈[/quote]
说错了,是先把熟路case when了然后关联一下你处理的结果数据
  • 打赏
  • 举报
回复
也在自学HIVE,表示为啥不先把数据处理了以后再用CASE WHEN呢?不知道说的对不对哈

7,388

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 数据仓库
社区管理员
  • 数据仓库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧