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

Oracle Pivot语句ORDER BY失效:PO_ITEM_ID无效标识符问题求助

问题解决:Oracle Pivot后ORDER BY报无效标识符

错误原因

你的SQL在Pivot后直接使用ORDER BY po_item_id DESC时,Oracle无法正确识别po_item_id列,这是Pivot语法解析优先级导致的外层排序无法直接引用子查询列的问题。

修正后的SQL

SELECT t.*
FROM (
    SELECT * 
    FROM (
        SELECT po_item_id, 
               CASE 
                   WHEN note_nbr LIKE '%C505%' THEN 'C505'
                   WHEN note_nbr LIKE '%C506%' THEN 'C506'
                   WHEN note_nbr LIKE '%C507%' THEN 'C507'
                   WHEN note_nbr LIKE '%C508%' THEN 'C508'
                   WHEN note_nbr LIKE '%C003%' THEN 'C003' 
               END c
        FROM SMP_PO_ITEM_NOTES
        WHERE note_nbr LIKE '%C505%' 
           OR note_nbr LIKE '%C506%' 
           OR note_nbr LIKE '%C507%' 
           OR note_nbr LIKE '%C508%'
           OR note_nbr LIKE '%C003%'
    )
    PIVOT(
        COUNT(po_item_id) 
        FOR c IN ('C505' AS C505, 'C506' AS C506, 'C507' AS C507, 'C508' AS C508, 'C003' AS C003)
    )
) t
ORDER BY t.po_item_id DESC;

关键修改点

  • 给Pivot的IN子句中每个值指定别名(如'C505' AS C505),确保生成的列名是规范的无引号格式,和你需要的输出表头完全匹配。
  • 将整个Pivot结果嵌套在子查询t中,在外层通过t.po_item_id明确引用列进行排序,解决Oracle的列识别问题。

输出示例

PO_ITEM_IDC505C506C507C508C003
000310000
000200100
000110100

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:37:36