如何使用FOR JSON SQL Server 2016在JSON对象内创建JSON数组

时间:2017-05-29 11:36:02

标签: sql-server-2016 ssms-2016 sql-server-json

如何使用FOR JSON SQL Server 2016创建JSON数组内部JSON对象(TABLE to JSON)
这是我的疑问:

SELECT   
m.MeetingId AS tblMeeting_MeetingId,  
m.Attended AS tblMeeting_Attended, 
m3.CompanyId AS tblMeetingAttendants_CompanyId, 
m3.MeetingAttendantsId AS tblMeetingAttendants_AttendantNameWithTitle, 
m4.UserId AS tblMeetingAttendees_UserId, 
m5.BrokerId AS tblMeetingBroker_BrokerId 
FROM Bv.tblMeeting m 
LEFT JOIN Bv.tblMeetingAttendants m3 ON m.MeetingId = m3.MeetingId  
LEFT JOIN Bv.tblMeetingAttendees m4 ON m.MeetingId = m4.MeetingId  
LEFT JOIN Bv.tblMeetingBroker m5 ON m.MeetingId = m5.MeetingId  
WHERE m.MeetingId = 739 
FOR JSON AUTO, INCLUDE_NULL_VALUES

enter image description here

上面的查询给出了这样的结果:

[
{
    "tblMeeting_MeetingId": 739,
    "tblMeeting_Attended": false,
    "tblMeeting_MeetingSubject": " Benchmark China Internet Analyst",
    "m3": [
        {
            "tblMeetingAttendants_CompanyId": 83,
            "tblMeetingAttendants_AttendantNameWithTitle": 499,
            "m4": [
                {
                    "tblMeetingAttendees_UserId": null,
                    "m5": [
                        {
                            "tblMeetingBroker_BrokerId": 275
                        }
                    ]
                }
            ]
        },
        {
            "tblMeetingAttendants_CompanyId": 83,
            "tblMeetingAttendants_AttendantNameWithTitle": 500,
            "m4": [
                {
                    "tblMeetingAttendees_UserId": null,
                    "m5": [
                        {
                            "tblMeetingBroker_BrokerId": 275
                        }
                    ]
                }
            ]
        },
        {
            "tblMeetingAttendants_CompanyId": 83,
            "tblMeetingAttendants_AttendantNameWithTitle": 501,
            "m4": [
                {
                    "tblMeetingAttendees_UserId": null,
                    "m5": [
                        {
                            "tblMeetingBroker_BrokerId": 275
                        }
                    ]
                }
            ]
        }
    ]
}
]

但我想要这样的结果

[
{
    "tblMeeting_MeetingId": 739,
    "tblMeeting_Attended": false,
    "tblMeeting_MeetingSubject": " Benchmark China Internet Analyst",
    "tblMeetingAttendants_AttendantNameWithTitle": [499,500,501],
    "tblMeetingAttendees_UserId": null,
    "tblMeetingBroker_BrokerId": 275
}
]

请尽快回复
提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果不使用字符串连接并编写自己的函数,这似乎是不可能的。没有神奇的JSON_ARRAY_AGGREGATE()函数。我一直在寻找一个。 以下是相关问题:SQL Server 2016 for JSON output integer array