从openjson(@json)结果创建表Azure SQL
我试图从一个表中的[key]行值生成一个表从openjson(@json)结果创建表Azure SQL,sql,json,azure-sql-database,open-json,Sql,Json,Azure Sql Database,Open Json,我试图从一个表中的[key]行值生成一个表 select*from openjson(@json)语句。openjson(@json)语句为我提供了包含53个[key]行值的结果,下面是一个小片段: [key] [value] [type] _id 5b05390c5d222f0059209918 1 ean 65485555 1 name NULL
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)
谢谢大家! 只需将WITH子句添加到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
)