簡體   English   中英

如何從SQL Server 2016獲取JSON輸出

[英]How to get JSON output from sql server 2016

我正在嘗試從SQL Server 2016(Tsql)創建JSON文件。 所需的輸出應如下所示

[{

   "name": "xxxx",
    "data": [
        ["Col1Name", Col1Value],
        ["Col2Name", Col2Value],
        ["Col3Name", Col3Value],
        ["Col4Name", Col4Value],
        ["Col5Name", Col5Value],
    ]
}]

或者它可能像

{
   "name": "xxxxxx",
   "data": [Col1Value, Col2Value, Col3Value, Col4Value, Col5Value]
}

我嘗試了一些使用JSON AUTOJSON PATH的 SQL查詢,如下所示,但沒有一個能為我提供所需的輸出。 任何幫助都是非常明顯的。

SELECT f.name,
data.OneMonth,
data.ThreeMonth, 
data.YTD,
data.OneYear,
data.ThreeYear,
data.FiveYear,
data.TenYear,
data.SinceIncept
FROM dbo.Fund f
JOIN dbo.FundPerf data on   f.FundId = sc.FundId
FOR JSON AUTO

你可以試試看

DECLARE @Table TABLE (name varchar(10), Col1Name VARCHAR(10),Col2Name VARCHAR(10),Col3Name VARCHAR(10),Col4Name VARCHAR(10),Col5Name VARCHAR(10))

INSERT INTO @Table VALUES ('xxx', 'Col1Value','Col2Value','Col3Value','Col4Value','Col5Value')

SELECT name
, Col1Name as 'data.Col1Name'
, Col2Name as 'data.Col2Name' 
, Col3Name as 'data.Col3Name' 
, Col4Name as 'data.Col4Name' 
, Col4Name as 'data.Col5Name' 
FROM @Table
FOR JSON PATH

結果:

[
   {
      "name":"xxx",
      "data":{
         "Col1Name":"Col1Value",
         "Col2Name":"Col2Value",
         "Col3Name":"Col3Value",
         "Col4Name":"Col4Value",
         "Col5Name":"Col4Value"
      }
   }
]

我認為使用簡單的查詢是不可能的。 您始終可以使用存儲過程和JSON_MODIFY

create table #temp (name varchar(30), col1 varchar(30), col2 varchar(30))
insert into #temp values ('Jason', 'hello', 'world'), ('yeshwanth', 'goodbye', 'world')

create or alter procedure sp_get_json @json varchar(max) out as
begin
  set @json = '[]'

  declare @name varchar(30), @col1 varchar(30), @col2 varchar(30), @item varchar(max)
  declare c cursor for select name, col1, col2 from #temp
  open c
  fetch c into @name, @col1, @col2
  while @@FETCH_STATUS = 0
  begin
    set @item = JSON_MODIFY('{}', '$.name', @name)
    set @item = JSON_MODIFY(@item, '$.data', JSON_QUERY('[]'))
    set @item = JSON_MODIFY(@item, 'append $.data', @col1)
    set @item = JSON_MODIFY(@item, 'append $.data', @col2)
    set @json = JSON_MODIFY(@json, 'append $', JSON_QUERY(@item))
    fetch c into @name, @col1, @col2
  end
  close c
  deallocate c
end

declare @j varchar(max)
exec sp_get_json @json = @j out
print @j

暫無
暫無

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

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