把sql改成这样就行了
SELECT ANY_VALUE(IFNULL(`subQuery1138444`.`row_no`, "")) as `p701110_99516018` FROM `result_shop_item_day` LEFT JOIN (SELECT tmp_table_inside.*, any_value(d1138444_99516018) as row_no FROM (SELECT result_shop_item_day.num_iid, sum(`result_shop_item_day`.`pay_amount`) AS top_amount, ROW_NUMBER() OVER ( ORDER BY SUM(result_shop_item_day.pay_amount) DESC) AS d1138444_99516018 FROM `result_shop_item_day` LEFT JOIN `shop` ON `result_shop_item_day`.`shop_id` = `shop`.`id` LEFT JOIN `result_product_brand_dimension` ON `result_shop_item_day`.`shop_id` = result_product_brand_dimension.shop_id AND result_shop_item_day.num_iid = result_product_brand_dimension.num_iid AND result_shop_item_day.day BETWEEN result_product_brand_dimension.start_date AND result_product_brand_dimension.end_date LEFT JOIN `m4_product_master_final` ON `result_shop_item_day`.`shop_id` = m4_product_master_final.shop_id and result_shop_item_day.num_iid = m4_product_master_final.num_iid LEFT JOIN `dim_day` ON `result_shop_item_day`.`brand_id` = dim_day.brand_id and result_shop_item_day.day = dim_day.day WHERE `result_shop_item_day`.`day` BETWEEN '2025-04-07' AND '2025-04-09' AND `result_shop_item_day`.`shop_id` = '43' AND `result_product_brand_dimension`.`brand_category` NOT IN ('购物金', '券', '邮费', '其他') AND (`result_shop_item_day`.`pay_amount` >= 0) GROUP BY `result_shop_item_day`.`num_iid`) tmp_table_inside) subQuery1138444 ON `result_shop_item_day`.`num_iid` = `subQuery1138444`.`num_iid` LEFT JOIN `shop` ON `result_shop_item_day`.`shop_id` = `shop`.`id` LEFT JOIN `result_product_brand_dimension` ON `result_shop_item_day`.`shop_id` = result_product_brand_dimension.shop_id AND result_shop_item_day.num_iid = result_product_brand_dimension.num_iid AND result_shop_item_day.day BETWEEN result_product_brand_dimension.start_date AND result_product_brand_dimension.end_date WHERE `result_shop_item_day`.`shop_id` = '43' AND `result_shop_item_day`.`day` BETWEEN '2025-04-07' AND '2025-04-09' AND `result_product_brand_dimension`.`brand_category` NOT IN ('购物金', '券', '邮费', '其他') GROUP BY IFNULL(subQuery1138444.row_no, '') LIMIT 0,500000
猜测的原因:在 GROUP BY
场景下,非聚合列必须显式处理。窗口函数的结果虽然生成于分组后,但如果没有聚合操作,Tidb8.5.1仍会认为它们是未确定的值,导致外部查询无法找到该列