【发布时间】:2017-02-14 21:09:32
【问题描述】:
我有嵌套的 JSON 文件,我试图将其用作报告的数据源。我正在“扁平化”结构,但不确定如何评估兄弟数据。
样本数据:
{
"Cources": [{
"ID": 1,
"Name": "MAC100",
"Room": 100,
"TAID": 123,
"StudentsIDs": [
1, 2
]
}
],
"TAs": [{
"ID": 123,
"Name": "Joe",
"LName": "Smith"
}],
"Students": [{
"ID": 1,
"LName": "Clark"
}, {
"ID": 2,
"LName": "Peterson"
}]
}
SQL Server:提取数据文件并展平报告数据:
SELECT Cource.ID,
Cource.Name as CName,
Cource.Room as CRoom,
CourceStudents.LName
FROM OPENROWSET (BULK 'C:\Data\file.json', SINGLE_CLOB) as jsonfile
CROSS APPLY OPENJSON(BulkColumn,'$[0]') WITH(
Cources nvarchar(max) AS JSON,
TAs nvarchar(max) AS JSON,
Students nvarchar(max) AS JSON
) AS [SampleData]
CROSS APPLY OPENJSON(Cources) WITH (
Room integer,
Name nvarchar(max),
StudentsIDs nvarchar(max) AS JSON
) as [Cources]
CROSS APPLY OPENJSON(Students) WITH (
ID integer,
LName nvarchar(max),
) as [Students]
CROSS APPLY OPENJSON(StudentsIDs) WITH (
**//??? how to get full data for the student from "Students" joining by the student ID ?**
) as [CourceStudents]
我偶然发现如何将所有学生数据从“学生”获取到通过 ID 加入的“学生 ID”中。
【问题讨论】:
-
您希望输出是什么样的?此外,拥有一串数字,比如学生所在的 Cource 并不是一个好的数据库设计。
-
此数据未存储在数据库中。我只使用 SQL Server 从生活数据流中生成报告。我正在尝试将 JSON 结构展平以类似于包含所有信息的表行,例如:Cources.ID、Students.ID、Students.LName
标签: sql-server json reporting-services sql-server-2016 sqlreportingservice