【发布时间】:2020-04-28 19:49:36
【问题描述】:
我有以下 SQL 查询来创建 JSON。我使用WITHOUT_ARRAY_WRAPPER,所以根不会创建数组。
select *
from Documents D
join Notices Notice ON Notice.DocumentID = D.DocumentID
join NoticeDetails NoticeDetail on NoticeDetail.DocumentID = d.DocumentID
where d.DocumentID = 1234
FOR JSON Auto,WITHOUT_ARRAY_WRAPPER,INCLUDE_NULL_VALUES
上述查询生成以下 JSON。 (为简洁起见,我删除了一些 json 属性)
{
"DocumentID": 1234,
"ClientID": 3,
"Notice": [
{
"DocumentID": 1234,
"StateCode": null,
"NoticeDetail": [
{
"NoticeDetailID": 80122,
"DocumentID": 1234,
"CreatedDateTime": "2020-03-26T16:08:40.730",
"ModifiedDateTime": "2020-03-26T16:08:40.730"
}
]
}
]
}
DocumentID 是 Documents 表中的 PK 和 Notices 和 NoticeDetails 表中的 FK。也是 Notices 表中的唯一键。
所以基本上Documents 到Notices 是一对一的关系。所以我不希望 Notice 属性成为输出 json 中的数组。
我预期的输出 json 应该是
{
"DocumentID": 1234,
"ClientID": 3,
"Notice":
{
"DocumentID": 1234,
"StateCode": null,
"NoticeDetail": [
{
"NoticeDetailID": 80122,
"DocumentID": 1234,
"CreatedDateTime": "2020-03-26T16:08:40.730",
"ModifiedDateTime": "2020-03-26T16:08:40.730"
}
]
}
}
我的 SQL 应该是什么才能获得预期的输出?
【问题讨论】:
-
这能回答你的问题吗? Multiple SELECT statements into a single JSON 和 this 和 that。
标签: tsql sql-server-2017 for-json