es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Crea un JSON anidado con SQL en Db2.

Tengo en realidad un JSON extraído de una tabla.

select json_object('ITEM_ID' value Trim(PRDC),
                   'ITEM_DESC' value TRIM(DESC),
                 ) JSONData
from my_file

Obtengo esto:

[{"ITEM_ID":"PRODUCTO_01","ITEM_DESC":"DESCRIPCIÓN_01"},
 {"ITEM_ID":"PRODUCTO_02","ITEM_DESC":"DESCRIPCIÓN_02"},
...
]

Ahora necesito una extracción como esta…

[{"ITEM_ID":"PRODUCTO_01","ITEM_DESC":"DESCRIPCIÓN_01", "ITEM_TIERPRICE": [
  {"QTY": 5, "PRICE": 7.0000},
  {"QTY": 10, "PRICE": 6.0000}
]},
{"ITEM_ID":"PRODUCTO_02","ITEM_DESC":"DESCRIPCIÓN_02", "ITEM_TIERPRICE": [
  {"QTY": 5, "PRICE": 6.0000},
  {"QTY": 10, "PRICE": 5.0000}
]}
...
]

Pero no sé cómo obtenerlo.
El ITEM_TIERPRICE es así:

SELECT QTY, PRICE FROM PRICE_TABLE WHERE ITEM = MI_ITEM
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para obtener la extracción deseada con ITEM_TIERPRICE incluido, puedes modificar la consulta SQL existente usando una subconsulta para recuperar los datos de ITEM_TIERPRICE. Aquí tienes un ejemplo de consulta:

    SELECT json_object('ITEM_ID' value TRIM(PRDC), 
                       'ITEM_ITDESC' value TRIM(DESC),
                       'ITEM_TIERPRICE' value (
                            SELECT json_arrayagg(json_object('QTY' value QTY, 'PRICE' value PRICE))
                            FROM PRICE_TABLE
                            WHERE ITEM = TRIM(PRDC)
                       )
                      ) JSONData
    FROM my_file
    

    En esta consulta modificada, hemos agregado un campo ITEM_TIERPRICE a la función json_object y utilizamos una subconsulta para recuperar los datos de precios por nivel para cada ítem. La subconsulta utiliza json_arrayagg para agregar los precios por nivel en un arreglo JSON, y json_object para crear un objeto para cada elemento del arreglo. También hemos incluido una cláusula WHERE para filtrar los datos de precios por el ID del ítem actual.

    Cuando ejecutes esta consulta, debería generar un arreglo JSON con cada objeto que contiene tres campos: ITEM_ID, ITEM_ITDESC e ITEM_TIERPRICE. El campo ITEM_TIERPRICE será en sí mismo un arreglo JSON que contiene uno o más objetos que representan los precios por nivel para ese ítem.

Comments are closed.