hive不能在case when使用子查询,换个写法
时间: 2023-10-26 12:19:28 浏览: 89
hive查询优化
如果Hive版本较老,不支持在CASE WHEN语句中使用子查询,可以使用LEFT JOIN的方式来实现类似的查询,具体如下所示:
```
SELECT
CASE
WHEN t1.currtype = '019' THEN t2.baserate
ELSE t1.baserate
END AS new_baserate
FROM table_name t1
LEFT JOIN (
SELECT baserate
FROM table_name
WHERE currtype = '014'
) t2 ON t1.currtype = '019';
```
上述语句中,首先进行了一个LEFT JOIN操作,将currtype为019的记录连接上currtype为014的记录,从而获得了currtype为019时对应的baserate值。然后在CASE WHEN语句中使用了LEFT JOIN查询得到的结果,从而实现了类似子查询的功能。这样就可以得到符合要求的结果了。
阅读全文