Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server JSON解析SQL Server_Sql Server_Tsql - Fatal编程技术网

Sql server JSON解析SQL Server

Sql server JSON解析SQL Server,sql-server,tsql,Sql Server,Tsql,正在寻找将子元素解析为行的方法 如何解析此JSON并获取作为行的预算选项以及其他列 假设该表有Id、Col1、Col2、Recommendation列,其中Recommendation包含JSON文本,其值如下: { "currentBudgetAmountMicros": "100000000", "recommendedBudgetAmountMicros": "210000000", "b

正在寻找将子元素解析为行的方法

如何解析此JSON并获取作为行的预算选项以及其他列

假设该表有
Id、Col1、Col2、Recommendation
列,其中
Recommendation
包含JSON文本,其值如下:

{
  "currentBudgetAmountMicros": "100000000",
  "recommendedBudgetAmountMicros": "210000000",
  "budgetOptions": [
    {
      "budgetAmountMicros": "100000000",
      "impact": {
        "baseMetrics": {
          "impressions": 10719,
          "clicks": 1811,
          "costMicros": "547948333",
          "conversions": 16.23
        },
        "potentialMetrics": {
          "impressions": 10719,
          "clicks": 1811,
          "costMicros": "547948333",
          "conversions": 16.23
        }
      }
    },
    {
      "budgetAmountMicros": "210000000",
      "impact": {
        "baseMetrics": {
          "impressions": 10719,
          "clicks": 1811,
          "costMicros": "547948333",
          "conversions": 16.23
        },
        "potentialMetrics": {
          "impressions": 13824,
          "clicks": 2400,
          "costMicros": "736541993",
          "conversions": 21.51
        }
      }
    }
  ]
}
像这样的

Json数据

declare @json           nvarchar(max)=N'
{
  "currentBudgetAmountMicros": "100000000",
  "recommendedBudgetAmountMicros": "210000000",
  "budgetOptions": [
    {
      "budgetAmountMicros": "100000000",
      "impact": {
        "baseMetrics": {
          "impressions": 10719,
          "clicks": 1811,
          "costMicros": "547948333",
          "conversions": 16.23
        },
        "potentialMetrics": {
          "impressions": 10719,
          "clicks": 1811,
          "costMicros": "547948333",
          "conversions": 16.23
        }
      }
    },
    {
      "budgetAmountMicros": "210000000",
      "impact": {
        "baseMetrics": {
          "impressions": 10719,
          "clicks": 1811,
          "costMicros": "547948333",
          "conversions": 16.23
        },
        "potentialMetrics": {
          "impressions": 13824,
          "clicks": 2400,
          "costMicros": "736541993",
          "conversions": 21.51
        }
      }
    }
  ]
}';
质疑

输出

currentBudgetAmountMicros   recommendedBudgetAmountMicros   budgetAmountMicros  bm_impressions  bm_clicks   bm_costMicros   bm_conversions  pm_impressions  pm_clicks   pm_costMicros   pm_conversions
100000000                   210000000                       100000000           10719           1811        547948333       16.23           10719           1811        547948333       16.23
100000000                   210000000                       210000000           10719           1811        547948333       16.23           13824           2400        736541993       21.51

请以表格文本的形式向我们展示您想要的结果。这些答案和评论有帮助吗?请告诉我们你试过什么。
currentBudgetAmountMicros   recommendedBudgetAmountMicros   budgetAmountMicros  bm_impressions  bm_clicks   bm_costMicros   bm_conversions  pm_impressions  pm_clicks   pm_costMicros   pm_conversions
100000000                   210000000                       100000000           10719           1811        547948333       16.23           10719           1811        547948333       16.23
100000000                   210000000                       210000000           10719           1811        547948333       16.23           13824           2400        736541993       21.51
select 
    bop.currentBudgetAmountMicros, bop.recommendedBudgetAmountMicros,
    bam.*
from openjson(@json)
with 
(
currentBudgetAmountMicros varchar(20),
recommendedBudgetAmountMicros varchar(20),
budgetOptions nvarchar(max) as json
) as bop
cross apply openjson(bop.budgetOptions)
with
(
budgetAmountMicros varchar(20),
--basemetrics
base_impressions int '$.impact.baseMetrics.impressions',
base_clicks int '$.impact.baseMetrics.clicks',
base_costMicros varchar(20) '$.impact.baseMetrics.costMicros',
base_conversions decimal(9,2) '$.impact.baseMetrics.conversions',
--potentialmetrics
potential_impressions int '$.impact.potentialMetrics.impressions',
potential_clicks int '$.impact.potentialMetrics.clicks',
potential_costMicros varchar(20) '$.impact.potentialMetrics.costMicros',
potential_conversions decimal(9,2) '$.impact.potentialMetrics.conversions'
) as bam