Я хочу вернуть результат запроса в виде объекта JSON с сервера SQL. У меня ниже таблицы Employee и EmployeeDtl.
DROP TABLE IF EXISTS #Employee
CREATE TABLE #Employee (EmpId bigint, EmpName varchar(2000))
INSERT INTO #Employee VALUES (1, 'A')
DROP TABLE IF EXISTS #EmployeeDtl
CREATE TABLE #EmployeeDtl (EmpId bigint, WorkObject varchar(100), LocationName varchar(100))
INSERT INTO #EmployeeDtl VALUES (1, 'AAA', 'AAAAA')
INSERT INTO #EmployeeDtl VALUES (1, 'BBB', 'BBBB')
INSERT INTO #EmployeeDtl VALUES (1, 'CCC', 'CCCC')
Я хочу вернуть данные в следующем формате.
{
"Employees": [{
"EmpId": 1,
"EmpName": "A",
"EmpDtl": [{
"WorkObject": "AAA",
"LocationName": "AAAAA"
},
{
"WorkObject": "BBB",
"LocationName": "BBBB"
},
{
"WorkObject": "CCC",
"LocationName": "CCCC"
}
]
}]
}
Я написал следующий запрос.
SELECT
E.EmpId, E.EmpName, ED.WorkObject AS [EmpDtl.WorkObject], ED.LocationName AS [EmpDtl.LocationName]
FROM
#Employee E
INNER JOIN #EmployeeDtl ED ON E.EmpId = ED.EmpId
FOR
JSON PATH, ROOT('Employees')
Но вышеприведенный запрос возвращает данные в следующем формате.
{
"Employees": [{
"EmpId": 1,
"EmpName": "A",
"EmpDtl": {
"WorkObject": "AAA",
"LocationName": "AAAAA"
}
}, {
"EmpId": 1,
"EmpName": "A",
"EmpDtl": {
"WorkObject": "BBB",
"LocationName": "BBBB"
}
}, {
"EmpId": 1,
"EmpName": "A",
"EmpDtl": {
"WorkObject": "CCC",
"LocationName": "CCCC"
}
}]
}
Не могли бы вы помочь мне понять, что я делаю здесь неправильно.