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

SQL Server中按PID、LID分组并将Name/Value转为JSON的方法

当然可以!SQL Server有专门的内置功能来搞定这个行转JSON的需求,完全不用手动拼接字符串(既麻烦又容易出错)。根据你的SQL Server版本,这里有两种靠谱的实现方式:

1. SQL Server 2022+ / Azure SQL Database(推荐写法)

如果你用的是较新的版本,直接用JSON_AGG函数就可以一步到位,语法简洁还靠谱:

SELECT 
    PID,
    LID,
    JSON_AGG(JSON_OBJECT(Name : Value)) AS JSON
FROM SqlTable
GROUP BY PID, LID;

小解释:

  • JSON_OBJECT(Name : Value):把每一行的Name和Value转换成单个JSON键值对(比如{"Technolgy":"ELECTRICAL"})
  • JSON_AGG(...):把同一个PID+LID分组里的所有键值对合并成一个完整的JSON对象
2. 旧版本SQL Server(2016-2019)

要是你的版本不支持JSON_AGG,可以用FOR JSON PATH结合子查询来实现:

SELECT 
    t.PID,
    t.LID,
    (
        SELECT Name AS [key], Value AS [value]
        FROM SqlTable
        WHERE PID = t.PID AND LID = t.LID
        FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
    ) AS JSON
FROM SqlTable t
GROUP BY t.PID, t.LID;

小解释:

  • 子查询里用FOR JSON PATH把当前分组的行转成JSON数组,WITHOUT_ARRAY_WRAPPER参数会去掉数组的[]括号,直接返回JSON对象
  • 外层通过GROUP BY保证每个PID+LID组合只输出一行

关于输出格式

两种写法都会输出你想要的完整JSON对象(实际输出是紧凑格式,你展示的换行只是排版效果):

{"Technolgy":"ELECTRICAL","Source":"100","Estimation":"50","Capacity":"Full"}

内容的提问来源于stack exchange,提问作者Magendran V

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:02:57