JSON AUTO可以在TSQL中用于创建具有子级的同级吗?

JSON AUTO可以在TSQL中用于创建具有子级的同级吗?,json,tsql,Json,Tsql,我想创建一个简单的JSON层次结构,而不使用子查询 目标输出 { 地点:[ { SiteID:456, 描述:前草坪, 协议:[ { 协议编号:89, 任期:每年 } ], 联系人:[ { 联系电话:77, 姓名:弗兰克 } ] } ] } 请注意协议和联系人是如何同级的,它们各自包含一个数组 不使用子查询就可以做到这一点吗?换句话说,我能告诉JSON AUTO在遍历SELECT表达式时重置它的维度吗 示例代码 -场地 选择456作为SiteID,“前草坪”作为说明 进入网站 -协议 选择89作

我想创建一个简单的JSON层次结构,而不使用子查询

目标输出

{ 地点:[ { SiteID:456, 描述:前草坪, 协议:[ { 协议编号:89, 任期:每年 } ], 联系人:[ { 联系电话:77, 姓名:弗兰克 } ] } ] } 请注意协议和联系人是如何同级的,它们各自包含一个数组

不使用子查询就可以做到这一点吗?换句话说,我能告诉JSON AUTO在遍历SELECT表达式时重置它的维度吗

示例代码

-场地 选择456作为SiteID,“前草坪”作为说明 进入网站 -协议 选择89作为AgreementID,选择456作为SiteID,选择“年度”作为期限 达成协议 -接触 选择77作为联系人ID,456作为站点ID,“Frank”作为名称 接触 -JSON自动 选择 Sites.SiteID, 地点。说明, Agreements.AgreementID, 协议。期限, Contacts.ContactID,-将其放置在协议中。我希望联系人成为协议的兄弟姐妹 联系人。姓名 从站点作为站点 以协议的形式左键加入协议。SiteID=Sites.SiteID 在contacts.SiteID=Sites.SiteID上将联系人作为联系人左加入 对于JSON自动,根“站点” -JSON_查询w/Static不可用于大型数据集 选择 Sites.SiteID, 地点。说明, JSON_QUERYCONCAT“[{AgreementID:”,AgreementID',Term:”,AgreementID,“}]”作为协议, JSON_QUERYCONCAT“[{ContactID:”,Contacts.ContactID',Name:',Contacts.Name',}]”作为联系人 从站点作为站点 以协议的形式左键加入协议。SiteID=Sites.SiteID 在contacts.SiteID=Sites.SiteID上将联系人作为联系人左加入 对于JSON路径,根“站点” -JSON_查询w/子查询我们试图避免的内容 选择 Sites.SiteID, 地点。说明, JSON_QUERYSELECT AgreementID,协议a中的术语,其中a.SiteID=Sites.SiteID表示JSON路径作为协议, JSON_QUERYSELECT ContactID,姓名来自联系人c,其中c.SiteID=Sites.SiteID作为联系人的JSON路径 从站点作为站点 对于JSON路径,根“站点” -清理 删除表站点 删除表协议 升降台触点 我遇到的所有JSON AUTO示例都非常简单:

平坦或 最后一个元素有一个数组或 最后一个元素有一个数组,其中最后一个元素有一个数组…等等
我在Stackoverflow、Google和MS文档中到处搜索,但找不到任何关于如何实现这一点的建议,或者这是否可能。有人在这方面取得过成功吗?

为什么要避免子查询?在这里,当它们产生您想要的结果时,它们是不受欢迎的吗?在几乎所有与性能相关的文档中,人们建议寻找相关子查询并将其更改为可能的连接或半连接。请看这里的一些回答:澄清:在我的真实代码中,有更多的同级,每个同级都有两个或三个连接条件。每个条件都基于indexd字段。我已经查看了示例代码的执行计划,第一个示例和最后一个示例看起来非常相似。也许我会鼓起勇气分享真正的代码,但我仍然好奇是否有人能回答我最初的问题。子查询的误用是一个问题,就像使用子查询获取查找值一样。对于您在这里所做的,子查询就是您想要的。谢谢Larnu。祝你度过美好的一年!