数据集ORA-01427

SQL最后一条是排序语句order by ,软件数据集显示ORA-01427错误,在数据库删除最后一条是排序语句order by能运行出来,但帆软数据集显示ORA-01427错误

SQL nf0EDYb5 发布于 2023-9-6 17:08
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于2023-9-6 17:09

SQL 在描述里面贴出来

  • nf0EDYb5 nf0EDYb5(提问者) SELECT a.packagetype,a.product_id,a.wafer_product,a.lot_id,a.lot_status_c,a.stepname,a.componentqty, CASE WHEN a.lot_id IN (SELECT DISTINCT CHILD_LOT_ID FROM STD_MES_SPLITMERGE SM WHERE INSTR(a.lot_id,SM.LOT_ID) = 1) THEN (SELECT substr(in_step_check_date,0,15) FROM STD_MES_LOTTRACKING LT WHERE LT.LOT_ID = SUBSTR(A.LOT_ID,0,9) AND LT.STEP_ID =\'CDieBond\') ELSE substr(a.in_step_check_date,0,15) END as in_step_check_date, CASE WHEN (sysdate - to_date(CASE WHEN a.lot_id IN (SELECT DISTINCT CHILD_LOT_ID FROM STD_MES_SPLITMERGE SM WHERE INSTR(a.lot_id,SM.LOT_ID) = 1) THEN (SELECT substr(in_step_check_date,0,15) FROM STD_MES_LOTTRACKING LT WHERE LT.LOT_ID = SUBSTR(A.LOT_ID,0,9) AND LT.STEP_ID =\'CDieBond\') ELSE substr(a.in_step_check_date,0,15) END,\'yyyyMMdd hh24miss\')) * 24 >120 THEN \'是\' ELSE \'否\' end AS \"120H\", CASE WHEN (sysdate - to_date(CASE WHEN a.lot_id IN (SELECT DISTINCT CHILD_LOT_ID FROM STD_MES_SPLITMERGE SM WHERE INSTR(a.lot_id,SM.LOT_ID) = 1) THEN (SELECT substr(in_step_check_date,0,15) FROM STD_MES_LOTTRACKING LT WHERE LT.LOT_ID = SUBSTR(A.LOT_ID,0,9) AND LT.STEP_ID =\'CDieBond\') ELSE substr(a.in_step_check_date,0,15) END,\'yyyyMMdd hh24miss\')) * 24 >148 THEN \'是\' ELSE \'否\' end AS \"148H\" FROM etl_mes_wip_hd a where a.stepid =\'CDieBond\' and a.lot_status <>\'RUN\' AND A.WAFER_PRODUCT IN(SELECT DISTINCT WAFER_PRODUCT FROM std_cat_uvwafer ) order by a.packagetype,a.product_id,a.wafer_product,a.in_step_check_date
    2023-09-12 17:11 
  • Z4u3z1 Z4u3z1 回复 nf0EDYb5(提问者) SELECT a.packagetype,a.product_id,a.wafer_product,a.lot_id,a.lot_status_c,a.stepname,a.componentqty, CASE WHEN a.lot_id IN (SELECT DISTINCT CHILD_LOT_ID FROM STD_MES_SPLITMERGE SM WHERE INSTR(a.lot_id,SM.LOT_ID) = 1) THEN (SELECT substr(in_step_check_date,0,15) FROM STD_MES_LOTTRACKING LT WHERE LT.LOT_ID = SUBSTR(A.LOT_ID,0,9) AND LT.STEP_ID =\'CDieBond\') ELSE substr(a.in_step_check_date,0,15) END as in_step_check_date, CASE WHEN (sysdate - to_date(CASE WHEN a.lot_id IN (SELECT DISTINCT CHILD_LOT_ID FROM STD_MES_SPLITMERGE SM WHERE INSTR(a.lot_id,SM.LOT_ID) = 1) THEN (SELECT substr(in_step_check_date,0,15) FROM STD_MES_LOTTRACKING LT WHERE LT.LOT_ID = SUBSTR(A.LOT_ID,0,9) AND LT.STEP_ID =\'CDieBond\') ELSE substr(a.in_step_check_date,0,15) END, \'yyyyMMdd hh24miss\')) * 24 >120 THEN \'是\' ELSE \'否\' end AS \"120H\", CASE WHEN (sysdate - to_date(CASE WHEN a.lot_id IN (SELECT DISTINCT CHILD_LOT_ID FROM STD_MES_SPLITMERGE SM WHERE INSTR(a.lot_id,SM.LOT_ID) = 1) THEN (SELECT substr(in_step_check_date,0,15) FROM STD_MES_LOTTRACKING LT WHERE LT.LOT_ID = SUBSTR(A.LOT_ID,0,9) AND LT.STEP_ID =\'CDieBond\') ELSE substr(a.in_step_check_date,0,15) END,\'yyyyMMdd hh24miss\')) * 24 >148 THEN \'是\' ELSE \'否\' end AS \"148H\" FROM etl_mes_wip_hd a where a.stepid =\'CDieBond\' and a.lot_status <>\'RUN\' AND exists (SELECT DISTINCT WAFER_PRODUCT FROM std_cat_uvwafer where a.WAFER_PRODUCT=std_cat_uvwafer.WAFER_PRODUCT ) order by a.packagetype,a.product_id,a.wafer_product,a.in_step_check_date (oracle没用过 只有碰运气了(斜杠是论坛自己加的请删除))
    2023-09-12 17:23 
  • Z4u3z1 Z4u3z1 回复 nf0EDYb5(提问者) “>”和\"<>\"也被转码了自己改回去一下
    2023-09-12 17:25 
最佳回答
0
3333xzxLv4初级互助
发布于2023-9-14 20:36

检查帆软数据集配置:确保数据集配置正确,并且与数据库的结构和查询逻辑一致。检查是否使用了正确的表和列名,并排除任何拼写错误。 检查WHERE子句条件:确保WHERE子句中的条件足够限定结果集,只返回期望的行数。如果需要限制结果集合并进行排序,可以使用ROWNUM或FETCH FIRST进行限制。 检查数据集语句中的子查询:如果数据集语句中使用了子查询,确保子查询返回的结果能够满足外部查询期望的行数。可以通过添加适当的条件或使用聚合函数来确保子查询返回的结果符合预期

最佳回答
0
LazySheepLv7高级互助
发布于2024-5-17 09:33
WITH CTE_Dates AS (       SELECT           a.packagetype,           a.product_id,           a.wafer_product,           a.lot_id,           a.lot_status_c,           a.stepname,           a.componentqty,           COALESCE(               (SELECT substr(in_step_check_date, 0, 15)                FROM STD_MES_LOTTRACKING LT                WHERE LT.LOT_ID = SUBSTR(a.LOT_ID, 0, 9)                  AND LT.STEP_ID = 'CDieBond'               ),               substr(a.in_step_check_date, 0, 15)           ) AS in_step_check_date_formatted       FROM           etl_mes_wip_hd a       WHERE           a.stepid = 'CDieBond'           AND a.lot_status <> 'RUN'           AND A.WAFER_PRODUCT IN (SELECT DISTINCT WAFER_PRODUCT FROM std_cat_uvwafer)   ),   CTE_CheckDates AS (       SELECT           *,           CASE               WHEN (sysdate - to_date(in_step_check_date_formatted, 'yyyyMMddHH24MISS')) * 24 > 120 THEN '是' ELSE '否'           END AS "120H",           CASE               WHEN (sysdate - to_date(in_step_check_date_formatted, 'yyyyMMddHH24MISS')) * 24 > 148 THEN '是' ELSE '否'           END AS "148H"       FROM           CTE_Dates   )   SELECT       *   FROM       CTE_CheckDates   ORDER BY       packagetype,       product_id,       wafer_product,       to_date(in_step_check_date_formatted, 'yyyyMMddHH24MISS');

试试这样

  • 3关注人数
  • 346浏览人数
  • 最后回答于:2024-5-17 09:33
    请选择关闭问题的原因
    确定 取消
    返回顶部