sql - 使用 where 条件的 SQL 子查询
问题描述
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
对不起,我的英语不好。
我想根据 HI.HIRECO = RE.RECODE 从 M6HI 获取 HIDESC,而 RE.RECODE 是来自 M5RE 的循环。
谁知道怎么修它?
解决方案
公用表表达式可以帮助您将其分解一下。
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
推荐阅读
- docker - 如何获取 docker 镜像中使用的用户 uid 和名称
- symfony - 为什么 Symfony 生成带有内核名称的路由?
- php - 在 ajax 调用中传递图像并使用 php 读取
- powerbi - 基于两列 DAX 汇总值
- lightgbm - LIghtGBM 的 SHAP 汇总图
- php - 如何在 Laravel 验证中要求数组并防止获得意外的键
- javascript - 基于使用 JavaScript 的 Viewbag 的值在 MVC 表单上显示或隐藏字段
- node.js - 无法在节点js中获取变量值
- flutter - flutter-我可以在应用程序树中实现 BlocProvider 而不是在 runApp 中实现吗?
- javascript - '$eq' 不适用于 mongodb 中日期中的数组