Создать таблицу из результатов openjson (@json) Azure SQL - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь создать таблицу из значений строки [key] из оператора select * from openjson(@json).Оператор openjson (@json) дает мне результаты, которые содержат 53 значения строки [key], вот небольшой фрагмент:

[key]      [value]                    [type]
_id        5b05390c5d222f0059209918   1
ean        65485555                   1
name       NULL                       0
holder     {"_id":"5b0538355d222f00585db6f1","name":"***... 5
root       {"_id":"5b05390c5d222f005920990a","holder":{"_id":"5b0538885... 5 
assigner   {"_id":"5b0538885d222f00570aca19","name":"***... 5
created    2018-05-23T09:49:00+0000   1
children   []                         4
address                               1
timezone   Etc/GMT-1                  1

Мне нужна таблица, которая выглядит примерно так:

    table1
[_id]                    [ean]    [name] [holder]                  [etc...]
5b05390c5d222f0059209918 65485555 NULL   {"_id":"5b0538355d222...}

Я также хочу иметь возможность вставлять значения из другого JSON в ту же таблицу

insert into table1 () 
select [value] from openjson(@json2)

Спасибо!

1 Ответ

0 голосов
/ 07 июня 2018

Просто добавьте предложение WITH в ваш запрос OPENJSON.

См. OPENJSON , например:

DECLARE @json NVARCHAR(MAX) = N'[  
  {  
    "Order": {  
      "Number":"SO43659",  
      "Date":"2011-05-31T00:00:00"  
    },  
    "AccountNumber":"AW29825",  
    "Item": {  
      "Price":2024.9940,  
      "Quantity":1  
    }  
  },  
  {  
    "Order": {  
      "Number":"SO43661",  
      "Date":"2011-06-01T00:00:00"  
    },  
    "AccountNumber":"AW73565",  
    "Item": {  
      "Price":2024.9940,  
      "Quantity":3  
    }  
  }
]'  

SELECT *
FROM OPENJSON ( @json )  
WITH (   
              Number   varchar(200)   '$.Order.Number',  
              Date     datetime       '$.Order.Date',  
              Customer varchar(200)   '$.AccountNumber',  
              Quantity int            '$.Item.Quantity',  
              [Order]  nvarchar(MAX)  AS JSON  
 )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...