SELECT * FROM gerp.fnd_lookup_values lv WHERE lv.language = userenv('LANG') AND lv.view_application_id = 700 AND lv.security_group_id = 0在hive中怎么写
时间: 2024-03-16 22:42:27 浏览: 133
在Hive中,你可以使用以下SQL语句来实现相同的查询:
```
SELECT *
FROM gerp.fnd_lookup_values lv
WHERE lv.language = SESSION_USER()
AND lv.view_application_id = 700
AND lv.security_group_id = 0;
```
其中,SESSION_USER()函数用于获取当前会话的用户名,相当于Oracle数据库中的USERENV('USER')函数。由于Hive中没有userenv函数,因此需要使用SESSION_USER()函数来代替。
另外,Hive中的SQL语句不区分大小写,因此可以将FROM、WHERE、AND等关键字写成大写或小写,以便于阅读。
相关问题
代码解释:select * from gerp.mtl_transaction_accounts where transaction_source_type_id = 5 order by last_update_date limit 0,4400000000
这是一个 SQL 查询语句,作用是从 gerp 数据库中的 mtl_transaction_accounts 表中选取所有 transaction_source_type_id 等于 5 的记录,并按照 last_update_date 字段进行升序排序。limit 0,4400000000 表示只返回从第 0 条记录开始的前 4400000000 条记录,用于限制查询结果的数量。需要注意的是,4400000000 这个数字非常大,可能会导致查询时间非常长,甚至超时。
转换到hive里面的写法:SELECT job_ver_id p_job_ver_id FROM (SELECT ver.job_ver_id FROM gerp.cux_cst_dist_jobs_all job ,gerp.cux_cst_dist_jobs_vers_all ver WHERE 1 = 1 AND job.org_id = 82 AND job.period_name ='2023-03' AND job.job_id = ver.job_id ORDER BY ver.jov_ver_name DESC) t WHERE rownum = 1
在 Hive 中,可以使用类似 SQL 的语言 HiveQL 来查询数据。将该 SQL 查询转换为 HiveQL 查询语句,大致如下:
```
SELECT t.job_ver_id AS p_job_ver_id
FROM (
SELECT ver.job_ver_id
FROM gerp.cux_cst_dist_jobs_all job
JOIN gerp.cux_cst_dist_jobs_vers_all ver ON job.job_id = ver.job_id
WHERE job.org_id = 82
AND job.period_name = '2023-03'
ORDER BY ver.jov_ver_name DESC
LIMIT 1
) t;
```
需要注意以下几点:
- 在 Hive 中,可以使用 `JOIN` 关键字来进行表之间的连接操作。
- Hive 中没有 `rownum` 关键字,可以使用 `LIMIT` 关键字来限制查询结果集的大小。
- 在 HiveQL 中,需要使用 `AS` 关键字来为查询结果中的列指定别名。
阅读全文