簡體   English   中英

在 T-SQL 查詢中使用新的 SQL Server 2016 FOR JSON PATH 語句並返回 JSON 的多行(或結果集)

[英]Use the new SQL Server 2016 FOR JSON PATH statement in a T-SQL query and return multiple rows (or resultsets) of JSON

我已經設置了一個類似於這個 sqlfiddle 的查詢

http://sqlfiddle.com/#!18/402f6/4

它返回單個 JSON(SQL Server 2016+ 中提供的功能)列。

正如您可能想象的那樣,我將 JSON 發布到 Web API 端點。

但是,Web API 端點將每個請求可以提交的“行”數限制為 25。

因此,在我的示例中,與其返回 1 行 JSON 和 100 條記錄,我想返回 4 行 JSON 或 4 個 Z0ECD11C1D7A287401D148A23BBD7 結果集。

可以這樣做嗎? 它需要如何重構才能做到這一點?

您可以嘗試使用以下方法使用NTILE()FOR JSON PATH

陳述:

;WITH cte AS (
   SELECT 
      id AS [StudentID], 
      first_name as [FirstName], 
      last_name as [LastName], 
      email as [Email], 
      gender as [Gender],
      NTILE(4) OVER (ORDER BY id) AS GroupID
   FROM TestData
)
SELECT
   DISTINCT t1.GroupID,
   t2.Json
FROM cte t1
CROSS APPLY (
   SELECT StudentID, FirstName, Email, Gender
   FROM cte
   WHERE GroupID = t1.GroupID
   FOR JSON PATH
) t2 (Json)

結果(使用您的測試數據):

GroupID Json
1       [{"StudentID":1,"FirstName":"Myrtie","Email":"mgunning0@bandcamp.com","Gender":"Female"}, ... ,{"StudentID":25,"FirstName":"Dante","Email":"dtoopeo@chronoengine.com","Gender":"Male"}]
2       [{"StudentID":26,"FirstName":"Hamilton","Email":"hginnanep@joomla.org","Gender":"Male"}, ... ,{"StudentID":50,"FirstName":"Enrika","Email":"ehayselden1d@weibo.com","Gender":"Female"}]
3       [{"StudentID":51,"FirstName":"Cirilo","Email":"cfrankcomb1e@blogspot.com","Gender":"Male"}, ...  ,{"StudentID":75,"FirstName":"Zeke","Email":"zleal22@eepurl.com","Gender":"Male"}]
4       [{"StudentID":76,"FirstName":"Todd","Email":"tscandred23@who.int","Gender":"Male"}, ...  ,{"StudentID":100,"FirstName":"Kristi","Email":"kpossek2r@wikispaces.com","Gender":"Female"}]

暫無
暫無

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

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