sql-server - 如何将一列中的 3 列和 10 行合并为 json 数据
问题描述
我有 10 行和 3 列,
在 3 列中,2 列的数据JSON
格式为
我正在尝试将所有行的数据合并到一个具有 json 数据并且有效的列中,
就像如果第 1 行有一个json
,它应该加入 json 和列名,然后是下一行,依此类推
已经能够这样做了,我的数据像这样重复
[ {
"role":"poweruser",
"account":"active",
"Name" : "Rose"
},
{
"role":"Admin",
"account":"inactive",
"Name" : "Rose"
}]
我正在尝试的输出是这样的
[{
"name":"Rose" {
"role":"poweruser",
"account":"active"
},
{
"role":"Admin",
"account":"inactive"
}
}]
我的表结构是这样的
select role,account,(another case statement) as name
from table1 inner join table2 on table1.id = table2.id
但我希望 JSON 不应该重复名称,一个名称和另外两个作为嵌套输出字面上不知道我应该做什么,建议
解决方案
Microsof SQL Server 对处理 JSON 有一些集成支持,您可以在此处和此处查看一些文档。
使用“表结构”查询和您提供的小示例数据,我得到以下信息:
-- create sample data
declare @user table
(
userid int,
username nvarchar(20)
);
insert into @user (userid, username) values
(1, 'Rose');
declare @userrole table
(
userid int,
rolename nvarchar(20),
rolestatus nvarchar(20)
);
insert into @userrole (userid, rolename, rolestatus) values
(1, 'poweruser', 'active'),
(1, 'admin', 'inactive');
SQL Server 完成所有工作的一个非常基本的查询:
select u.username as 'Name',
roles.rolename as 'Role',
roles.rolestatus as 'Account'
from @user u
join @userrole Roles
on Roles.userid = u.userid
for json auto; -- specify that we want JSON output with AUTOmatic structure
这给出了:
[{"Name":"Rose","roles":[{"Role":"poweruser","Account":"active"},{"Role":"admin","Account":"inactive"}]}]
可以格式化为:
[
{
"Name":"Rose",
"Roles":
[
{
"Role":"poweruser",
"Account":"active"
},
{
"Role":"admin",
"Account":"inactive"
}
]
}
]
如果这不是您所追求的,请扩展您的问题(使用更多示例数据)。
推荐阅读
- mongodb - 如何检查 MongoDB 上运行的数据库和查询的状态?
- python - PNG图像中奇怪的隐藏层,需要删除
- spring - 如何在 Spring Data 和 Elasticsearch 中使属性瞬态?
- python-3.x - 尝试使用 matplotlib 将 y 值添加到我的条形图
- reactjs - 检查用户是否登录 React Js
- bootstrap-native - Bootstrap native:在下拉处理上覆盖 setFocus
- javascript - 如何使用 Web Crypto API SubtleCrypto.deriveKey() 为 PBKDF2 设置外长
- sql-server - SQL - How do I declare a group of people's names to be used in my query?
- signalr - SignalR - 客户端连接的传输方法的可能值
- php - 如何显示一个搜索过滤值的查询表?