我希望将数据转换成JSON,每批数据中不能有两个以上的用户,不能有空值。
create table #test(userid int, status_a int, status_b int)
insert into #test values (135, 11,23),
(197, 14, null),
(254, null,21),
(261, 13, 25),
(391, null, 17)
结果应该是
[
{
"TrackingData":[
{
"userid":135,
"status_a":11,
"status_b":23
},
{
"userid":197,
"status_a":14
}
]
},
{
"TrackingData":[
{
"userid":254,
"status_b":21
},
{
"userid":261,
"status_a":13,
"status_b":25
}
]
},
{
"TrackingData":[
{
"userid":391,
"status_b":17
}
]
}
]
我试过这样做,但不知道如何分批次
SELECT *
FROM #test
FOR JSON PATH
1条答案
按热度按时间toe950271#
看起来您是按
userid
排序的,并且您希望前两对放在TrackingData
对象中,下一对放在TrackingData
对象中,依此类推。这个
它生成基于零的连续行编号,并使用整数除法将其划分为
<@BatchSize>
大小的组。| 用户识别码|状态_a|状态_B|注册护士|RN/@批量|约松|
| - ------|- ------|- ------|- ------|- ------|- ------|
| 一百三十五|十一|二十三|无|无|{“用户ID”:135,“状态a”:11,“状态B”:23}|
| 一百九十七|十四|零|1个|无|{“用户标识”:197,“状态_a”:14}|
| 二百五十四|零|二十一|第二章|1个|{“用户ID”:254,“状态B”:21}|
| 二六一|十三|二十五|三个|1个|{“用户标识”:261,“状态a”:13,“状态B”:25}|
| 三九一|零|十七|四个|第二章|{“用户标识”:391,“状态B”:17}|
子数组的构造是通过字符串聚合完成的,并 Package 在
JSON_QUERY
中,因此它被视为JSON,而不会在最终的FOR JSON PATH
中转义。