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

SQL Server从存储JSON数组的表统计各Optionsid对应答案数

遍历JSON数组实现统计的可行方案

核心实现思路是通过SQL Server内置的OPENJSON函数将JSON字段内的Answer数组展开为独立行,再按原逻辑分组统计,完全还原原关系表的统计结果。

完整查询语句

SELECT 
    COUNT(answer_item.Pid) AS Counted,
    answer_item.OptionsId
FROM [PidJson]
CROSS APPLY OPENJSON([PidJson].[json], '$.Answer')
WITH (
    Pid INT '$.Pid',
    OptionsId INT '$.Optionsid',
    [Column] VARCHAR(100) '$.Column'
) AS answer_item
GROUP BY answer_item.[Column], answer_item.OptionsId

逻辑说明

  • CROSS APPLY关联OPENJSON返回的结果集,作用是对PidJson表的每一行数据,都将其json字段中存储的Answer数组拆分为若干独立行,每一行对应数组中的一个答案元素
  • WITH子句可直接将JSON元素的属性映射为结构化的关系列,无需多次调用JSON_VALUE提取字段,性能和可读性更高
  • 最后的分组逻辑和原Answer关系表的统计逻辑完全一致,最终输出的统计结果和你之前得到的Optionsid为1、2、3对应Counted为2、2、1完全匹配

如果你的字段实际类型和示例中声明的INT、VARCHAR不符,调整WITH子句中的字段类型即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:27:03