我有一个具有以下结构/行的表:
| 识别号|选项名称|选项值|
| - ------|- ------|- ------|
| 无|性别问题|男性|
| 1个|性别问题|女性|
我想查询数据库并返回以下JSON:
[{
"OptionName":"Gender",
"Values":[
"Male",
"Female"
]
}]
然而,我目前得到的结果是:
[{
"OptionName":"Gender",
"Values":[
{
"OptionValue":"Male"
},
{
"OptionValue":"Female"
}
]
}]
下面是我的疑问:
SELECT TOP(1) OptionName,
(
JSON_QUERY(
(
SELECT OptionValue
FROM [TestJSON].[dbo].[Options]
WHERE OptionName = 'Gender'
FOR JSON PATH
)
)
) AS [Values]
FROM [TestJSON].[dbo].[Options]
WHERE OptionName = 'Gender'
FOR JSON PATH
我该怎么做才能得到我需要的结果?
1条答案
按热度按时间oug3syen1#
尽管SQL Server 2022引入了
JSON_ARRAY()
函数,但使用它构建具有可变项计数的JSON数组很困难,因此您可以尝试基于字符串的方法:如果您知道每个选项的最大值数(示例中为
5
),则JSON_ARRAY()
和PIVOT
关系运算符的组合是另一个选项: