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

编写SQL查询:将同一car_id的参数合并至同一列

解决方案:合并同一car_id的参数记录到单列

原表结构与数据

car_idcar_modelcar_lotspec_namedisplayMindisplayMaxstate
102Toyota2Battery10011
102Toyota2Engine1000251
102Toyota2Oil9091
103BMW2Engine2000501
103BMW2Throttle2050
103BMW2Battery100100

期望结果

car_idcar_modelcar_lotcar_params
102Toyota2params {(Battery:100,1,1), (Engine:1000,25,1),(Oil:90,9,1)}
103BMW2params {(Engine:2000,50,1), (Throttle:20,5,0),(Battery:100,10,0)}

正确SQL查询(适用于Azure SQL Database/SQL Server)

INTERSECT用于筛选两个查询的交集结果,完全不适合当前的行合并场景,所以无法得到正确结果。针对Azure环境,推荐使用STRING_AGG函数实现行转列的合并操作:

SELECT 
    car_id,
    car_model,
    car_lot,
    CONCAT('params {', STRING_AGG(CONCAT('(', spec_name, ':', displayMin, ',', displayMax, ',', state, ')'), ', '), '}') AS car_params
FROM cars
GROUP BY car_id, car_model, car_lot

代码说明

  1. 单条参数拼接:用CONCAT把spec_name、displayMin、displayMax、state拼接成(Battery:100,1,1)格式的字符串
  2. 分组合并:通过GROUP BY按car_id、car_model、car_lot分组,再用STRING_AGG将同一组内的参数字符串用, 分隔合并
  3. 添加前后缀:最后用CONCAT加上params {前缀和}后缀,得到期望的car_params格式

如果你的环境使用MySQL,可替换为GROUP_CONCAT函数,语法调整如下:

SELECT 
    car_id,
    car_model,
    car_lot,
    CONCAT('params {', GROUP_CONCAT(CONCAT('(', spec_name, ':', displayMin, ',', displayMax, ',', state, ')') SEPARATOR ', '), '}') AS car_params
FROM cars
GROUP BY car_id, car_model, car_lot

该查询可直接用于Azure Logic Apps的循环处理,返回的每条记录对应一个car_id的完整参数集合。

内容的提问来源于stack exchange,提问作者Need Help

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 12:50:15