繁体   English   中英

如何从多个列创建一个JSON列?

[英]How to create a json column from multiple columns?

该表需要转换为json字段。

ID,  product, line_item, createdDate

123,  valA,    valB,    '2019-02-02'

JSON表将是这样。

ID,  json_column

123, { valA : 
             {valB : '2019-02-02'}}

现在,我不确定可以使用哪种parse_json函数来创建此列。 当我使用列名时,它会出错-'无效标识符'

查询使用。

select ID, parse_json( {product : { line_item : createdDate }};

首先,始终尝试提供一个完全可复制的示例

这是根据您所写内容提出的一个问题

create or replace table x(id int, 
                          product varchar, 
                          line_item varchar, 
                          createdDate varchar) 
as select * from values
    (123,'valA','valB','2019-02-02');

select * from x;
-----+---------+-----------+-------------+
 ID  | PRODUCT | LINE_ITEM | CREATEDDATE |
-----+---------+-----------+-------------+
 123 | valA    | valB      | 2019-02-02  |
-----+---------+-----------+-------------+

现在,要获得所需的结果,可以使用OBJECT_CONSTRUCT函数,如下所示:

select id, object_construct(product, object_construct(line_item, createddate)) from x;
-----+---------------------------------------------------------------------+
 ID  | OBJECT_CONSTRUCT(PRODUCT, OBJECT_CONSTRUCT(LINE_ITEM, CREATEDDATE)) |
-----+---------------------------------------------------------------------+
 123 | {                                                                   |
     |   "valA": {                                                         |
     |     "valB": "2019-02-02"                                            |
     |   }                                                                 |
     | }                                                                   |
-----+---------------------------------------------------------------------+

如果要将多个订单项分组在一起,则可能还需要OBJECT_AGG

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM