首页 > 解决方案 > 将关系数据转换为 Json 键和值

问题描述

我需要将关系数据转换为 JSON 数据。我有关系数据中的数据,使用我必须创建 JSON 键和 JSON 值的数据。因此 JSON 键将在一个列中,而该键的 JSON 值将在另一列中。我尝试使用 JSON PATH 进行简单的 SQL 查询,但它对我不起作用。

以下是我需要生成的有效负载。

"domesticCallRates": {
    "F2M": {
      "EV2D": "0.00",
      "EV2O": "0.11"
    },
    "local": {
      "C213": "0.01",
      "EV2D": "0.02",
      "EV2O": "0.03"
    },
    "national": {
      "EV2D": "0.04",
      "EV2O": "0.05"
    }
  },

      "internationalCallRates": {`"0": {
      "$Landline": "6",
      "$Mobile": "6",
      "country": "India"
    },
    "1": {
      "$Landline": "3",
      "$Mobile": "3",
      "country": "Indonesia"
    }
  },

以下是我表中的数据:

在此处输入图像描述

下面是我的尝试。

  SELECT 
Quote_id, 
   (
SELECT [EV2D], [value]
FROM (VALUES
      ('EV2D', CONVERT(varchar(max), Requested_RatePerMin_ExGST))
   ) v ([EV2D], [value])
   FOR JSON PATH
   ) AS F2M
FROM [Pricing].[Voice_Domestic_CallRates_NonStandard] FOR JSON AUTO

输出我得到的是

[
   {
      "Quote_id":13952,
      "F2M":[
         {
            "EV2D":"EV2D",
            "value":"0.0000"
         }
      ]
   },
   {
      "Quote_id":13952,
      "F2M":[
         {
            "EV2D":"EV2D",
            "value":"0.1100"
         }
      ]
   },
   {
      "Quote_id":13952,
      "F2M":[
         {
            "EV2D":"EV2D",
            "value":"0.0000"
         }
      ]
   },
   {
      "Quote_id":13952,
      "F2M":[
         {
            "EV2D":"EV2D",
            "value":"0.0000"
         }
      ]
   },
   {
      "Quote_id":13952,
      "F2M":[
         {
            "EV2D":"EV2D",
            "value":"0.0000"
         }
      ]
   },
   {
      "Quote_id":13952,
      "F2M":[
         {
            "EV2D":"EV2D",
            "value":"0.0000"
         }
      ]
   },
   {
      "Quote_id":13952,
      "F2M":[
         {
            "EV2D":"EV2D",
            "value":"0.0500"
         }
      ]
   },
   {
      "Quote_id":13953,
      "F2M":[
         {
            "EV2D":"EV2D",
            "value":"0.0000"
         }
      ]
   },
   {
      "Quote_id":13953,
      "F2M":[
         {
            "EV2D":"EV2D",
            "value":"0.1100"
         }
      ]
   },
   {
      "Quote_id":13953,
      "F2M":[
         {
            "EV2D":"EV2D",
            "value":"0.0000"
         }
      ]
   },
   {
      "Quote_id":13953,
      "F2M":[
         {
            "EV2D":"EV2D",
            "value":"0.0000"
         }
      ]
   },
   {
      "Quote_id":13953,
      "F2M":[
         {
            "EV2D":"EV2D",
            "value":"0.0000"
         }
      ]
   },
   {
      "Quote_id":13953,
      "F2M":[
         {
            "EV2D":"EV2D",
            "value":"0.0000"
         }
      ]
   },
   {
      "Quote_id":13953,
      "F2M":[
         {
            "EV2D":"EV2D",
            "value":"0.0500"
         }
      ]
   },
   {
      "Quote_id":13955,
      "F2M":[
         {
            "EV2D":"EV2D",
            "value":"0.0000"
         }
      ]
   },
   {
      "Quote_id":13955,
      "F2M":[
         {
            "EV2D":"EV2D",
            "value":"0.1100"
         }
      ]
   },
   {
      "Quote_id":13955,
      "F2M":[
         {
            "EV2D":"EV2D",
            "value":"0.0000"
         }
      ]
   },
   {
      "Quote_id":13955,
      "F2M":[
         {
            "EV2D":"EV2D",
            "value":"0.0000"
         }
      ]
   },
   {
      "Quote_id":13955,
      "F2M":[
         {
            "EV2D":"EV2D",
            "value":"0.0000"
         }
      ]
   },
   {
      "Quote_id":13955,
      "F2M":[
         {
            "EV2D":"EV2D",
            "value":"0.0000"
         }
      ]
   },
   {
      "Quote_id":13955,
      "F2M":[
         {
            "EV2D":"EV2D",
            "value":"0.0500"
         }
      ]
   }
]

类似于关系数据中的上述国际电话数据。

在此处输入图像描述

标签: jsonsql-serverrelational-database

解决方案


推荐阅读