Arrays SQL Server结果为Json数组
我需要执行一个输出Json数组的查询 SQL Server具有JSON路径的功能;但结果是:Arrays SQL Server结果为Json数组,arrays,json,sql-server,Arrays,Json,Sql Server,我需要执行一个输出Json数组的查询 SQL Server具有JSON路径的功能;但结果是: [{"key_1":"value_1","key_2":"value_2"},{"key_1":"value_3","key_2":"value_4"}] 但我需要的输出是: { "key_1": ["value_1","value_3"], "key_2": ["value_2","value_4"] } 可以这样做吗?添加,不使用JSON路径的\u数组\u包装器 更新: 这不是最漂亮的解决方
[{"key_1":"value_1","key_2":"value_2"},{"key_1":"value_3","key_2":"value_4"}]
但我需要的输出是:
{ "key_1": ["value_1","value_3"],
"key_2": ["value_2","value_4"]
}
可以这样做吗?添加,不使用JSON路径的\u数组\u包装器
更新:
这不是最漂亮的解决方案,但它确实有效。我试图根据输出的原始格式重新创建一些数据。所以答案是基于这个假设
-测试数据基于我从你的问题中得出的结果
创建表dbo.jsonvalues
钥匙1 NVARCHARMAX
,键2 NVARCHARMAX
;
插入到dbo.jsonvalues中
钥匙1
,键2
价值观
N‘价值1’
,N'value_2'
,
N'value_3'
,N'value_4'
;
要以正确的格式获取数据,您首先必须取消数据绑定或以不同的方式存储数据。然后,您可以使用SELECT中的子查询在输出中创建数组
选择
*
进入
新格式
从…起
dbo.json将值设置为J
UNPIVOT
按键1、按键2中按键的VAL
作为u;
选择
N.钥匙
,从newformat中选择N2.vals作为N2,其中N2.keys=N.keys表示JSON自动作为vals
从…起
选择不同的
钥匙
从…起
新格式
AS N
对于JSON AUTO,不带数组包装器;
输出:
{
"keys":"key_1","vals":[{"vals":"value_1"},{"vals":"value_3"}]
},
{
"keys":"key_2","vals":[{"vals":"value_2"},{"vals":"value_4"}]
}
{
"key_1":["value_1","value_3"]
,"key_2":["value_2","value_4"]
}
这不会给你确切的你想要的,但是最接近的,我可以不开始做一些手动调整。我在下面做了一些调整,以达到您要求的输出格式。请注意,它很脆弱,可能需要对数据进行额外调整
选择
替换替换替换替换
选择
N.钥匙
,从newformat中选择N2.vals作为N2,其中N2.keys=N.keys表示JSON自动作为vals
从…起
选择不同的
钥匙
从…起
新格式
AS N
对于JSON AUTO,不带数组包装器
,“键:','vals',',:',':','},{:',',',','{:','}]}',']';
输出:
{
"keys":"key_1","vals":[{"vals":"value_1"},{"vals":"value_3"}]
},
{
"keys":"key_2","vals":[{"vals":"value_2"},{"vals":"value_4"}]
}
{
"key_1":["value_1","value_3"]
,"key_2":["value_2","value_4"]
}
添加,不带\u数组\u包装器,用于JSON路径
更新:
这不是最漂亮的解决方案,但它确实有效。我试图根据输出的原始格式重新创建一些数据。所以答案是基于这个假设
-测试数据基于我从你的问题中得出的结果
创建表dbo.jsonvalues
钥匙1 NVARCHARMAX
,键2 NVARCHARMAX
;
插入到dbo.jsonvalues中
钥匙1
,键2
价值观
N‘价值1’
,N'value_2'
,
N'value_3'
,N'value_4'
;
要以正确的格式获取数据,您首先必须取消数据绑定或以不同的方式存储数据。然后,您可以使用SELECT中的子查询在输出中创建数组
选择
*
进入
新格式
从…起
dbo.json将值设置为J
UNPIVOT
按键1、按键2中按键的VAL
作为u;
选择
N.钥匙
,从newformat中选择N2.vals作为N2,其中N2.keys=N.keys表示JSON自动作为vals
从…起
选择不同的
钥匙
从…起
新格式
AS N
对于JSON AUTO,不带数组包装器;
输出:
{
"keys":"key_1","vals":[{"vals":"value_1"},{"vals":"value_3"}]
},
{
"keys":"key_2","vals":[{"vals":"value_2"},{"vals":"value_4"}]
}
{
"key_1":["value_1","value_3"]
,"key_2":["value_2","value_4"]
}
这不会给你确切的你想要的,但是最接近的,我可以不开始做一些手动调整。我在下面做了一些调整,以达到您要求的输出格式。请注意,它很脆弱,可能需要对数据进行额外调整
选择
替换替换替换替换
选择
N.钥匙
,从newformat中选择N2.vals作为N2,其中N2.keys=N.keys表示JSON自动作为vals
从…起
选择不同的
钥匙
从…起
新格式
AS N
对于JSON AUTO,不带数组包装器
,“键:','vals',',:',':','},{:',',',','{:','}]}',']';
输出:
{
"keys":"key_1","vals":[{"vals":"value_1"},{"vals":"value_3"}]
},
{
"keys":"key_2","vals":[{"vals":"value_2"},{"vals":"value_4"}]
}
{
"key_1":["value_1","value_3"]
,"key_2":["value_2","value_4"]
}
但是我可以用键聚合所有值吗?示例:键1:[值1,值3]可以。但是它很乱。请参阅我的更新答案,以获取如何实现的示例。但是我可以使用该键聚合所有值吗?示例:键1:[值1,值3]可以。但是它很乱。请参阅我的更新答案,以了解如何实现这一点的示例。