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

SAP HANA SQL报错:fetch返回行数超请求数,求修正查询语句

SAP HANA SQL错误:Getting fetch returns more than requested number of rows 解决方法

错误原因

原SQL中SELECT T1."Price" into pght FROM ITM1 T1 WHERE T1."PriceList" = '1';是问题核心:pght是单个变量,仅能存储单行数据,但ITM1表中PriceList='1'的记录有多条,导致返回结果行数超出变量可容纳的数量,触发该错误。

需求回顾

需更新ITM1表中PriceList='2'的记录:

  • 将Factor字段设为T2.U_COEFFICIENT
  • 将Price字段设为同ItemCode下PriceList='1'的Price值乘以T2.U_COEFFICIENT

修正后的SQL语句(自连接方式)

UPDATE "ITM1" target
SET 
    target."Factor" = T2."U_COEFFICIENT",
    target."Price" = T2."U_COEFFICIENT" * source."Price"
FROM "ITM1" target
INNER JOIN OITM T0 ON T0."ItemCode" = target."ItemCode"
INNER JOIN OMRC T1 ON T1."FirmCode" = T0."FirmCode"
INNER JOIN "@PR_MARQUES_ASSOCIE" T2 ON T1."FirmName" = T2."U_MARQUES"
-- 自连接获取当前ItemCode对应的PriceList='1'采购价
INNER JOIN "ITM1" source ON source."ItemCode" = target."ItemCode" AND source."PriceList" = '1'
WHERE 
    T2."U_MARQUES" = 'ROCHAS' 
    AND T2."Code" = '01' 
    AND target."PriceList" = '2' 
    AND T1."FirmName" = 'ROCHAS';

方案说明

  1. 用target指代要更新的PriceList='2'记录,source指代同ItemCode下PriceList='1'的记录,通过自连接直接获取每个Item对应的采购价,避免单行变量存储多行数据的问题。
  2. 保留原表关联逻辑,确保U_COEFFICIENT能正确匹配到对应Item。
  3. 在SET子句中直接完成计算,保证每条PriceList='2'的记录都能基于自身ItemCode的采购价完成更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 11:02:53