json - 从 T-SQL 查询将键值对输出为 JSON

标签 json t-sql

我有一个应用程序需要提供配置数据作为 JSON 中的键值对。

我想从表查询中输出键值对的 JSON。

表格可以有不同的命名项目和不同数量的项目。

表格

<表类=“s-表”> <标题> 项目ID 报告ID 姓名 值 <正文> 1 29 标题 按产品划分的利润 2 29 背景颜色 #FFFFFF 3 29 显示边框 0 4 29 显示总和 0

SQL

select .................   FOR JSON PATH

我猜这需要使用 PIVOT?

预期 JSON

{"caption":"Profit by Product","bgColor":"#FFFFFF","showBorder":"0","showsum":"0"}

感谢任何人可以提供的帮助。

最佳答案

你可以做一些字符串聚合(假设不是 2017 年)

示例

Declare @YourTable Table ([ITEMID] varchar(50),[REPORTID] varchar(50),[NAME] varchar(50),[VALUE] varchar(50))  Insert Into @YourTable Values 
 (1,29,'caption','Profit by Product')
,(2,29,'bgColor','#FFFFFF')
,(3,29,'showBorder','0')
,(4,29,'showsum','0')


Select REPORTID
      ,JSONString =  '{' + Stuff((Select concat(',','"',Name,'":"',value,'"') From @YourTable Where ReportID=A.ReportID For XML Path ('')),1,1,'')  + '}'
 From @YourTable A
 Group by REPORTID

返回

REPORTID    JSONString
29          {"caption":"Profit by Product","bgColor":"#FFFFFF","showBorder":"0","showsum":"0"}

关于json - 从 T-SQL 查询将键值对输出为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56852686/

相关文章:

javascript - 在 JSPX 中转义 JSON

json - Typescript,Angular 2 - 将 Json 解析为 http 中的对象

javascript - 在 js 对象与 xml 或 json 中存储大量文本

python - 为什么我看到 "TypeError: string indices must be integers"?

t-sql - 将5个表数据合并到主表中

sql-server - TSQL - 获取线串上最接近点的坐标

允许对 JSON 数据进行类似 SQL 查询的 Javascript 库?

sql-server - 将增量值插入表中

C# 和 LINQ : ordering a query by a nested query's value

sql-server - SQL Server 在不聚合的情况下透视数据