使用STRING_AGG结合IIF时如何获取去重后的唯一需求值?
解决运输单需求重复聚合的问题
你的问题根源在于未对重复的需求条目做去重处理,同一个运输单下多个站点的相同需求会被多次纳入聚合,导致结果重复。只需先对需求进行去重,再执行字符串聚合即可解决。
修改后的SQL语句:
SELECT STRING_AGG( IIF(lrq_manditory = 'Y', CONCAT('*', lrq_equip_type, ' ', lrq_type), CONCAT(lrq_equip_type, ' ', lrq_type)), ', ' ) WITHIN GROUP (ORDER BY lrq_equip_type, lrq_type) FROM ( -- 先过滤重复需求,确保每个唯一需求仅保留一条 SELECT DISTINCT lrq_manditory, lrq_equip_type, lrq_type FROM loadrequirement WHERE mov_number = oh.mov_number ) AS UniqueRequirements
关键修改说明:
- 新增子查询
UniqueRequirements,通过DISTINCT去重运输单下重复的需求组合(必填状态+设备类型+需求类型) - 基于去重后的数据集执行
STRING_AGG,确保每个需求仅被聚合一次
修改后预期结果:
DRV FST, *DRV UVAX
内容的提问来源于stack exchange,提问作者M Daniel
相关产品推荐
相关产品推荐

