SQL 使用 where 条件的子查询

SQL Subquery using where condition

SELECT
    RE.RECODE,
    (SELECT
        X.HIDESC
    FROM
            (
            SELECT HI.HIDESC, ROW_NUMBER() OVER(PARTITION BY HI.HIRECO ORDER BY HI.HIRECO) AS RN
            FROM M6HI HI WHERE HI.HIRECO = RE.RECODE
            ) X
    WHERE X.RN = 1) AS NILAI
FROM M5RE RE

抱歉我的英语不好。

我想从 M6HI 获取 HIDESC 基于 HI.HIRECO = RE.RECODE 并且 RE.RECODE 是从 M5RE 循环。

有人知道怎么解决吗?

一个常见的 Table 表达式可能会帮助您分解一下。

WITH cte_hidesc AS (
 SELECT HI.HIDESC, ROW_NUMBER() OVER(PARTITION BY HI.HIRECO ORDER BY HI.HIRECO) AS RN
 FROM M6HI HI INNER JOIN M5RE RE ON HI.HIRECO = RE.RECODE
)

SELECT HIDESC
FROM cte_hidesc
WHERE ROWNUMBER = 1

HiveQL 支持 CTE。文档在这里:
https://cwiki.apache.org/confluence/display/Hive/Common+Table+Expression