簡體   English   中英

從SQL Server 2016+創建JSON(用於JSON路徑命令)

[英]Create JSON from SQL Server 2016+ (using for JSON path command)

我正在嘗試以特定的JSON格式創建一些輸出,這是輸出的示例(將重復多次-每所大學一次):

樣本json圖片

{
    "id": "37e556ae6b9f620d2b7262d3de971c40",
    "recordType": "school",
    "created": 1532531378,
    "updated": 1532531378,
    "published": 1532531378,
    "name": "ABC University – ABC School of Management",
    "schoolName": "ABC School of Management",
    "universityName": "ABC University",
    "sortableName": "ABC School of Management"
}

我一直在考慮使用SQL,因為它具有FOR JSON命令,該命令可處理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提取相關部分。 我想知道是否應該透視表,以使“ IndiUID”的值成為數據庫表中的字段,或者為每個當前標題項(DataValue,Ranking,Band等)創建一個新表。

我以為我可以從indiUID = OVERALL_SCORE,SCHOOL_NAME_FORMAL等表格中選擇,但我想知道這是否太亂了。

這就是我遇到的問題–如何將這些數據組織到表中以便能夠提取數據? 這主要是關於創建JSON輸出,因此與數據庫部分是一個特別優雅的解決方案無關(這不會-我對SQL非常基礎!)。

您可以嘗試以下

樣本數據

CREATE TABLE [#school]
([school_name_and_business_school_name] VARCHAR(255), 
 [school_name]                          VARCHAR(255), 
 [university_name]                      VARCHAR(255), 
 [school_sortable]                      VARCHAR(255)
);

INSERT INTO [#school]
VALUES
('ABC University – ABC School of Management', 
 'ABC School of Management', 
 'ABC University', 
 'ABC School of Management'
),
('XYZ University – XYZ School of Management', 
 'XYZ School of Management', 
 'XYZ University', 
 'XYZ School of Management'
),
('QWE University – QWEC School of Management', 
 'QWE School of Management', 
 'QWE University', 
 '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"
}

這有幫助嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM