You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修正Oracle SQL子查询:按name_type拆分full_name为中英文列

修正后的SQL查询方案

原SQL语句存在语法错误:使用逗号分隔两个独立子查询后重复声明FROM per_person_names_f,不符合SQL语法规范。以下是两种可行的修正方案,根据你的实际需求选择:

方案一:使用CASE WHEN条件聚合(推荐,适合同一人员的两类姓名同行展示)

如果你的表中有唯一标识人员的字段(比如person_id),可以用这个方法将同一人的英文、阿拉伯语姓名整合到同一行的两列中:

SELECT
    person_id, -- 替换为你表中实际的人员唯一标识字段
    MAX(CASE WHEN name_type = 'GLOBAL' THEN full_name END) AS "english name",
    MAX(CASE WHEN name_type = 'SA' THEN full_name END) AS "arabic name"
FROM per_person_names_f
GROUP BY person_id; -- 必须按人员唯一标识分组

如果不需要分组(仅需汇总所有GLOBAL和SA类型的姓名,不保证同行对应),可以去掉GROUP BY和person_id,但结果会是一行汇总数据。

方案二:使用自连接(适合同一人员两类姓名严格对应)

若表中存在关联同一人员的字段(比如person_id),可以通过自连接将两类姓名关联:

SELECT
    global.full_name AS "english name",
    sa.full_name AS "arabic name"
FROM per_person_names_f global
INNER JOIN per_person_names_f sa
    ON global.person_id = sa.person_id -- 替换为实际关联字段
    AND global.name_type = 'GLOBAL'
    AND sa.name_type = 'SA';

如果允许某类姓名缺失,可将INNER JOIN改为LEFT JOIN或RIGHT JOIN。

内容的提问来源于stack exchange,提问作者aasem shoshari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 20:20:30