首页 > 解决方案 > 如何在 SQL 中使用选择值作为 JSON 的键

问题描述

我有一个 tsql 存储过程,它生成我正在使用的数据库的 json 文件。json 文件的某个部分是具有名称、值和需求变量的属性数组。这部分 JSON 文件如下所示:

"Properties": [
    {
        "PropertyName": "Foo"
        "PropertyValue": "Bar"
        "Required": "True"
    },
    {
        "PropertyName": "Foo2"
        "PropertyValue": "Bar2"
        "Required": "False"
    }
]

这是作为创建整个 JSON 文档的更大 SQL 查询的子查询生成的:

SELECT,..., 
    (SELECT P.Name as PropertyName, P.Value as PropertyValue, P.Requirement as Required 
    FROM Properties P FOR JSON PATH) as Properties
FROM Foo
FOR JSON PATH

我希望对 JSON 文件进行布局,因此 PropertyName 的值是其他两个值的键:

"Properties" [
    {"Foo": {{"PropertyValue": "Bar"},{"Required": "True"}},
    etc.
]

理想情况下,代码可能类似于:

(Select P.Value as [[P.Name].PropertyValue], P.Requirement as [[P.Name].Required]
 FROM Properties P 
 FOR JSON PATH)

但显然这不是合法的表达方式。有什么方法可以在 SQL 框架中执行此操作,还是应该在创建文件后对其进行修改?

标签: jsonsql-servertsql

解决方案


推荐阅读