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';
方案说明
- 用
target指代要更新的PriceList='2'记录,source指代同ItemCode下PriceList='1'的记录,通过自连接直接获取每个Item对应的采购价,避免单行变量存储多行数据的问题。 - 保留原表关联逻辑,确保
U_COEFFICIENT能正确匹配到对应Item。 - 在SET子句中直接完成计算,保证每条
PriceList='2'的记录都能基于自身ItemCode的采购价完成更新。
内容的提问来源于stack exchange,提问作者Boy Blacknyellow
相关产品推荐
相关产品推荐

