从SQL Server 2016+创建JSON(用于JSON路径命令)

从SQL Server 2016+创建JSON(用于JSON路径命令),sql,json,data-structures,for-json,Sql,Json,Data Structures,For Json,我正在尝试以特定的JSON格式创建一些输出,下面的输出示例将重复多次-每所大学一次: 我一直在想我会使用SQL来实现这一点,因为它有forJSON命令,用于处理JSON格式并处理嵌套。在硬编码值时,我可以使用以下代码重新创建上述值: SELECT HASHBYTES('md5','something') AS id ,'school' AS recordType ,getdate() AS created ,getdate() AS updated

我正在尝试以特定的JSON格式创建一些输出,下面的输出示例将重复多次-每所大学一次:

我一直在想我会使用SQL来实现这一点,因为它有forJSON命令,用于处理JSON格式并处理嵌套。在硬编码值时,我可以使用以下代码重新创建上述值:

SELECT 
     HASHBYTES('md5','something') AS id
     ,'school' AS recordType
     ,getdate() AS created
     ,getdate() AS updated
     ,getdate() AS published
     ,'ABC University – ABC School of Management' AS name
     ,'ABC School of Management' as schoolname 
     ,'ABC University' as universityName
     , 'ABC School of Management' as sortableName
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER 
我的问题是,我需要为不同的大学创建100次输出。我想用SQL创建一个数据库表,并在上面运行一些东西。以下是Excel中的数据示例,我已过滤列表,仅显示上述所需的数据以及稍后单独输出中所需的两个其他数据点。我稍后将担心其他输出:

IndiUID SchoolCode  DataValue   Ranking Band    RegionalRank
OVERALL_SCORE   XYZ     105 D   23
SCHOOL_NAME_FORMAL  XYZ XYZ Institute of Management         
SCHOOL_NAME_SORTABLE    XYZ XYZ Institute of Management         
SCHOOL_NAME_AND_BUSINESS_SCHOOL_NAME    XYZ XYZ Institute of Management, XYZ School of Business         
STUDENTS_MEDIAN_AGE XYZ 26          
OVERALL_SCORE   ABC     35  B   3
SCHOOL_NAME_FORMAL  ABC ABC School of Management            
SCHOOL_NAME_SORTABLE    ABC ABC School of Management            
SCHOOL_NAME_AND_BUSINESS_SCHOOL_NAME    ABC ABC University – ABC School of Management           
STUDENTS_MEDIAN_AGE ABC 26          
我只是不能完全理解我需要如何构造我的表,以便我可以使用SQL提取相关部分。我想知道是否应该透视表,以便“induid”的值成为数据库表中的字段,或者为每个当前标题项DataValue、Ranking、Band等创建一个新表

我想我可以从表中选择Induid=总分,学校名称,正式等等,但我想知道这是否太混乱了


这就是我的困境所在——我如何将这些数据组织到表中以便能够提取它?这主要是关于创建JSON输出的,所以DB部分是一个特别优雅的解决方案并不重要——我非常熟悉SQL

您可以尝试以下方法

样本数据:

然后使用此查询:

SELECT HASHBYTES('md5', 'something') AS [id], 
  'school' AS [recordType], 
  GETDATE() AS [created], 
  GETDATE() AS [updated], 
  GETDATE() AS [published], 
  [school_name_and_business_school_name] AS [name], 
  [school_name] AS [schoolName], 
  [university_name] AS [universityName], 
  [school_sortable] AS [sortableName]
FROM   [#school] 
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER;
给出以下结果:

{"id":"Q3uTDbhLgHnC3YBKcZNrXw==",
"recordType":"school",
"created":"2018-09-07T10:14:44.130",
"updated":"2018-09-07T10:14:44.130",
"published":"2018-09-07T10:14:44.130",
"name":"ABC University – ABC School of Management",
"schoolName":"ABC School of Management",
"universityName":"ABC University",
"sortableName":"ABC School of Management"
},

{"id":"Q3uTDbhLgHnC3YBKcZNrXw==",
"recordType":"school",
"created":"2018-09-07T10:14:44.130",
"updated":"2018-09-07T10:14:44.130",
"published":"2018-09-07T10:14:44.130",
"name":"XYZ University – XYZ School of Management",
"schoolName":"XYZ School of Management",
"universityName":"XYZ University",
"sortableName":"XYZ School of Management"
},

{"id":"Q3uTDbhLgHnC3YBKcZNrXw==",
"recordType":"school",
"created":"2018-09-07T10:14:44.130",
"updated":"2018-09-07T10:14:44.130",
"published":"2018-09-07T10:14:44.130",
"name":"QWE University – QWEC School of Management",
"schoolName":"QWE School of Management",
"universityName":"QWE University",
"sortableName":"QWE School of Management"
}

这有用吗?

谢谢,丹。这真的很有帮助
SELECT HASHBYTES('md5', 'something') AS [id], 
  'school' AS [recordType], 
  GETDATE() AS [created], 
  GETDATE() AS [updated], 
  GETDATE() AS [published], 
  [school_name_and_business_school_name] AS [name], 
  [school_name] AS [schoolName], 
  [university_name] AS [universityName], 
  [school_sortable] AS [sortableName]
FROM   [#school] 
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER;
{"id":"Q3uTDbhLgHnC3YBKcZNrXw==",
"recordType":"school",
"created":"2018-09-07T10:14:44.130",
"updated":"2018-09-07T10:14:44.130",
"published":"2018-09-07T10:14:44.130",
"name":"ABC University – ABC School of Management",
"schoolName":"ABC School of Management",
"universityName":"ABC University",
"sortableName":"ABC School of Management"
},

{"id":"Q3uTDbhLgHnC3YBKcZNrXw==",
"recordType":"school",
"created":"2018-09-07T10:14:44.130",
"updated":"2018-09-07T10:14:44.130",
"published":"2018-09-07T10:14:44.130",
"name":"XYZ University – XYZ School of Management",
"schoolName":"XYZ School of Management",
"universityName":"XYZ University",
"sortableName":"XYZ School of Management"
},

{"id":"Q3uTDbhLgHnC3YBKcZNrXw==",
"recordType":"school",
"created":"2018-09-07T10:14:44.130",
"updated":"2018-09-07T10:14:44.130",
"published":"2018-09-07T10:14:44.130",
"name":"QWE University – QWEC School of Management",
"schoolName":"QWE School of Management",
"universityName":"QWE University",
"sortableName":"QWE School of Management"
}