Arrays 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包装器 更新: 这不是最漂亮的解决方

我需要执行一个输出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包装器

更新:

这不是最漂亮的解决方案,但它确实有效。我试图根据输出的原始格式重新创建一些数据。所以答案是基于这个假设

-测试数据基于我从你的问题中得出的结果 创建表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]可以。但是它很乱。请参阅我的更新答案,以了解如何实现这一点的示例。