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
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